Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    stringa troncata in form precompilato

    Salve a tutti,
    come da titolo ho implementato un form precompilato con alcuni valori che l'utente può modificare. Il problema si manifesta durante il caricamento dei dati che presentano spazi al loro interno(es: parameter name piuttosto che parameter_name). La stringa viene troncata in presenza dello spazio. Utilizzo un writer lato servlet per costruire gli input precompilati, e con jquey li gestico lato client. Come posso risolvere questo problema? il dato viene correttamente scritto e visualizzato nel DB. Grazie a tutti,

    Salvatore
    Giuly Sei La Mia Vita

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157

    Re: stringa troncata in form precompilato

    Originariamente inviato da salvo1087
    Salve a tutti,
    come da titolo ho implementato un form precompilato con alcuni valori che l'utente può modificare.
    precompilato da chi? usi una libreria esterna oppure lo crei tu con dei dati che carichi dinamicamente?
    Originariamente inviato da salvo1087 Il problema si manifesta durante il caricamento dei dati che presentano spazi al loro interno(es: parameter name piuttosto che parameter_name). La stringa viene troncata in presenza dello spazio.
    Probabilmente la libreria è fatta in modo da considerare valido tutto quello che inserisci fino al primo blank
    Originariamente inviato da salvo1087
    Utilizzo un writer lato servlet per costruire gli input precompilati, e con jquey li gestico lato client. Come posso risolvere questo problema? il dato viene correttamente scritto e visualizzato nel DB. Grazie a tutti,

    Salvatore
    cioè fammi capire, cosa scrivi correttamente su db? Il dato con spazi o il dato senza spazi? Metti "valore con spazi" e salvi "valore con spazi"? boh allora quale è il problema?

    Inoltre, perché non posti il codice incriminato? Mica possiamo andare ad intuito
    RTFM Read That F*** Manual!!!

  3. #3
    Ciao Valia,
    il form lo precompilo io prendendo dati da un DB, quindi non utilizzo nessuna libreria esterna, semplicemente vado a riempire un div vuoto con codice html+dati che passo da una servlet. I dati li gestico con jquery, perchè effettuo una chiamata asincrona. I dati sul DB vengono salvati correttamente, quindi se viene inserita una stringa con spazi, viene salvata con spazi, il problema si presenta quando effettuo il caricamento del dato per popolare la form "precompilata". Quindi nel DB ho il valore salvato correttamente, ma nella form ho il valore troncato.
    questa è la porzione di codice:

    metodo servlet
    Codice PHP:
      private void getInteraction(HttpServletRequest requestthrows Exception
        
    {
            
    InteractionObj singleObj= new InteractionObj();
            
    InteractionObjUI singleUI = new InteractionObjUI();
            
            
            try
            {
                
    int idInteger.parseInt(request.getParameter("ID"));
                
    singleObj DpInteractionObj.getInteractionObject(id);
                
    singleUI.setInteractionName(singleObj.getInteractionName());
                
    singleUI.setInputValuesReference   (singleObj.getInputValuesReference());
                
    singleUI.setRemoteWSUrl(singleObj.getRemoteWSUrl());
                
    StringBuilder buffer = new StringBuilder();
                
    buffer.append(singleUI.toHtmlString("htmlFormReadOnly"));
                
    buffer.append("<div id=\"newParUpdate\">" "</div>");
                
    buffer.append("<div align=\"right\">");
                
    buffer.append("<button  id=\"buttonMoreUpdate\" class=\"ui-icon-circle-plus\"> Add more parameters </button>");
                
    buffer.append("</div>");
                
    out.print(buffer.toString());
                
            }
            catch(
    Exception e)
            {
                
            }
            
    out.flush();
            
    out.close();
        } 
    questo è il metodo che costruisce l'html:
    Codice PHP:
    else if("htmlFormReadOnly".equalsIgnoreCase(type))
            {
                return 
                    
    "<div><label for=\"wsInteractionName-NewUp\">Name (3-50)</label></div><input readonly=\"readonly\" id=\"wsInteractionName-NewUp\" type=\"text\" name=\"wsInteractionName-New\" class=\"text ui-widget-content ui-corner-all\" value="super.getInteractionName()+" >"+"</input>"+
                    
    "<div><label for=\"wsInteractionUrl-NewUp\">WS URL (30-255)</label></div><input id=\"wsInteractionUrl-NewUp\" type=\"text\" name=\"wsInteractionUrl-New\" class=\"text ui-widget-content ui-corner-all\" value="super.getRemoteWSUrl() +" >"+"</input>"+
                    
    "<div><label for=\"wsInteractionValue-NewUp\">Reference Value (0-512)</label></div><input readonly=\"readonly\" id=\"wsInteractionValue-NewUp\" type=\"text\" name=\"wsInteractionValue-New\" class=\"text ui-widget-content ui-corner-all\" value="super.getInputValuesReference() +">" +"</input>"
                    
                
            } 
    questa è la funzione jquery con la quale implemento e gestisco la form:
    Codice PHP:
     function update(idnameParam)
    {
        $(
    '#update').dialog("open");
        $(function()
        {
            
    refValueGlob nameParam;
            
    idUpdate id;
            
            $.
    post('ServiceWSInteractionServlet', {REQUEST'getSingleObj'ID:id},
            function(
    data)
            {
                $(
    '#update').dialog(
                {
                    
    autoOpentrue,
                    
    modal:true,
                    
    buttons:
                    {
                        
    "Update": function()
                        {
                            
    getNewParUpdate(countGlobidUpdate);
                            $(
    '#divTableContainerParameter').animate({"height":"toggle"},{queuefalseduration:1000});
                            $(
    this).dialog("close");
                            
    addActionResults("Update Settings""update");
                            
    refresh();
                            
                        },
                        
    "Close": function()
                        {
                            $(
    this).dialog("close");
                        }
                    }
                });
                $(
    '#update').empty();
                $(
    '#update').html(data);
                
    makeButton();
                
    makeClikkableButton();
                
                return 
    false;
            });
        });

    per risolvere il problema in maniera rapida, ho inserito un replace dello spazio vuoto con il carattere "_", ma vorrei risolvere in modo tale da poter dare all'utente la possibilità di inserire stringhe con spazi. Grazie per la risposta

    Salvatore
    Giuly Sei La Mia Vita

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    ok, adesso è un po' più chiara la cosa (anche se davvero ho dovuto leggere più di una volta quanto scrivi per capire realmente tutto).

    Non conosco jquery in dettaglio, ti posso suggerire che a naso il problema potrebbe essere l'effettiva lettura, che si ferma al primo spazio letto. Dovresti vedere se jquery ha questo limite (la documentazione)
    RTFM Read That F*** Manual!!!

  5. #5
    si, effettivamente stavo già controllando la documentazione di jquery, avevo intuito potesse essere un problema relativo a questo. Adesso grazie a te, ho avuto una probabile conferma. Grazie per la risposta e perdonami se non sono stato da subito chiaro. Non appena ho sviluppi provvederò a postare la soluzione

    Salvatore
    Giuly Sei La Mia Vita

  6. #6
    Originariamente inviato da salvo1087
    questo è il metodo che costruisce l'html:
    Codice PHP:
    else if("htmlFormReadOnly".equalsIgnoreCase(type))
            {
                return 
                    
    "<div><label for=\"wsInteractionName-NewUp\">Name (3-50)</label></div><input readonly=\"readonly\" id=\"wsInteractionName-NewUp\" type=\"text\" name=\"wsInteractionName-New\" class=\"text ui-widget-content ui-corner-all\" value="super.getInteractionName()+" >"+"</input>"+
                    
    "<div><label for=\"wsInteractionUrl-NewUp\">WS URL (30-255)</label></div><input id=\"wsInteractionUrl-NewUp\" type=\"text\" name=\"wsInteractionUrl-New\" class=\"text ui-widget-content ui-corner-all\" value="super.getRemoteWSUrl() +" >"+"</input>"+
                    
    "<div><label for=\"wsInteractionValue-NewUp\">Reference Value (0-512)</label></div><input readonly=\"readonly\" id=\"wsInteractionValue-NewUp\" type=\"text\" name=\"wsInteractionValue-New\" class=\"text ui-widget-content ui-corner-all\" value="super.getInputValuesReference() +">" +"</input>"
                    
                
            } 
    non so' se hai notato che non includi i valori degli attributi value degli input tra doppi apici, così il parser html del browser prende la stringa fino al primo spazio considerandolo come value e il resto lo considera html (quindi a seconda degli spazi livede come attributi di input ecc...).

    Correggi tutto in
    Codice PHP:
    value=\""super.getInputValuesReference() +"\"> 
    lolide
    Java Programmer

    Informati

  7. #7
    Grazie lolide,
    hai ragione, non mi ero completamente accorto di questo errore, ed a dire la verità non ci avrei mai pensato. Scusate se ho postato questa domanda banale, ma sono un autodidatta e principiante in materia di programmazione. Grazie, adesso tutto funge
    Giuly Sei La Mia Vita

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.