Visualizzazione dei risultati da 1 a 9 su 9

Discussione: strut2 validation

  1. #1

    strut2 validation

    Il mio problema è questo:

    da un menù invoco una action (utenti) nella quale ci sono il metodo execute e inserisciutente.

    per la stessa action ho creato un xml di validazione campi che restituisce i messaggi di mancato inserimento dei campi obbligatori.

    ora.


    quando chiamo la prima volta la jsp alla quale è collegata la action essendo i campi vuoti in pratica passa per la validazione e così la jsp mi compare con il messaggio di mancato inserimento dei campi obbligatori.

    ecco.

    come faccio a far evitare al primo avvio della jsp questi messaggi?

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    309
    Ciao
    la validazione va fatta sulla action del form e non prima.
    la prima action ti porta alla pagina dove inserisci i dati poi fai la validazione.
    il file xml deve avere come nome: nomeclasse-validation.xml
    tomcat 6.016
    netbeans 6.1

  3. #3
    Originariamente inviato da dardo
    Ciao
    la validazione va fatta sulla action del form e non prima.
    la prima action ti porta alla pagina dove inserisci i dati poi fai la validazione.
    il file xml deve avere come nome: nomeclasse-validation.xml
    cerco di spiegarmi meglio perchè sennò non riesco a farmi capire:

    la mia situazione è la seguente:

    includo una jsp di menu nella quale è presente la voce di un nuovo contatto
    [*]<s:a action="NuovoContatto" >Nuovo Contatto</s:a>


    nello struts.xml

    <action name="NuovoContatto" class="miopackage.action.ActionContatto" method="execute">
    <result>/nuovo_contatto.jsp</result>
    <result name="input">/indexal.jsp</result>
    </action>



    nella ActionContatto

    public String execute() throws Exception {


    return SUCCESS;
    }


    ho creato per questa action un xml di validazione:

    ActionContatto-validation.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE validators PUBLIC
    "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
    "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
    <validators>
    <field name="nome">
    <field-validator type="requiredstring">
    <param name="trim">true</param>
    <message key="errors.required" />
    </field-validator>
    </field>
    <field name="indirizzo">
    <field-validator type="requiredstring">
    <param name="trim">true</param>
    <message key="errors.required" />
    </field-validator>
    </field>
    </validators>



    innanzi tutto non capisco perchè per com'è se non includo nello struts.xml la mappatura dell' INPUT mi va in crash e poi in ogni caso succede che al momento dell'apertura della jsp del nuovo contatto avviene immediatamente anche la validazione dei campi e quindi si apre la jsp con scritto "campo nome obbligatorio" come se avessi fatto click su submit, ma non è così.

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    309
    l'action nuovo contatto ti porta nella pagina del form?
    se si ActionContatto-validation.xml non serve ora e non ha senso nemmeno la classe.
    codice:
    <action name="NuovoContatto">
      <result>nuovo_contatto.jsp</result> 
    </action>
    
    
    <action name="VerificaContatto" class="miopackage.action.ActionContatto">
      <result>verifica.jsp</result> 
      <result name="input">/nuovo_contatto.jsp</result>
      <result name="error">/nuovo_contatto.jsp</result>
    </action>
    action contatto deve essere l'action del form dove inserirai i dati.
    spero di essere stato chiaro
    tomcat 6.016
    netbeans 6.1

  5. #5
    Originariamente inviato da dardo
    l'action nuovo contatto ti porta nella pagina del form?
    se si ActionContatto-validation.xml non serve ora e non ha senso nemmeno la classe.
    codice:
    <action name="NuovoContatto">
      <result>nuovo_contatto.jsp</result> 
    </action>
    
    
    <action name="VerificaContatto" class="miopackage.action.ActionContatto">
      <result>verifica.jsp</result> 
      <result name="input">/nuovo_contatto.jsp</result>
      <result name="error">/nuovo_contatto.jsp</result>
    </action>
    action contatto deve essere l'action del form dove inserirai i dati.
    spero di essere stato chiaro
    mi pare chiaro...solo che così dovrei avere 2 action per gestire l'apertura del form e l'inserimento del contatto, mentre io vorrei lavorare con una unica action, nella quale l'apertura del nuovo contatto sia gestito semplicemente dal metodo execute e il metodo inseriscicontatto invece si occupi dell'inserimento....

    edit:

    tra l'altro come detto prima se provo nello struts xml ad inserire solo <result>nuovo_contatto.jsp</result>

    corrispondente al click sul menù...struts mi va in eccezione dicendo che si aspetta un result INPUT...perchè?

  6. #6
    Se dal menu chiami la jsp direttamente senza passare per l'action non passi per la validazione

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    309
    certo.
    dal menu tu hai un link alla pagina che conterrà il form dove inserirai i dati. non puoi validare il form prima di inserire i dati.
    il form ( <s:form action="mia_azione"...) puntera a una action e quella deve avere la classe e il relativo dile xml per la validatione.
    la classe legata a mia_azione deve avere i vari metodi set e get legati ai vari elementi del form. se la validazione va maleritorna alla pagina di inserimento altrimenti nella jsp che indichi con SUCCESS.
    aggiungo una piccola nota: in caso devi usare elementi come select o radio button legati a una lista, che crei al momento ad esempio tramite una interrogazione a db, questa la devi popolare nella action che ti porta alla pagina di inserimento dati, praticamente come intendevi fare tu, e senza file xml per la validazione che va legato alla seconda action (quella del form). in questo caso dovresti implementare Preparable nella seconda action e ricreare la lista, in modo che in caso di errore la lista viene ripopolata
    tomcat 6.016
    netbeans 6.1

  8. #8
    Originariamente inviato da dardo
    certo.
    dal menu tu hai un link alla pagina che conterrà il form dove inserirai i dati. non puoi validare il form prima di inserire i dati.
    il form ( <s:form action="mia_azione"...) puntera a una action e quella deve avere la classe e il relativo dile xml per la validatione.
    la classe legata a mia_azione deve avere i vari metodi set e get legati ai vari elementi del form. se la validazione va maleritorna alla pagina di inserimento altrimenti nella jsp che indichi con SUCCESS.
    aggiungo una piccola nota: in caso devi usare elementi come select o radio button legati a una lista, che crei al momento ad esempio tramite una interrogazione a db, questa la devi popolare nella action che ti porta alla pagina di inserimento dati, praticamente come intendevi fare tu, e senza file xml per la validazione che va legato alla seconda action (quella del form). in questo caso dovresti implementare Preparable nella seconda action e ricreare la lista, in modo che in caso di errore la lista viene ripopolata
    ma non è uno spreco fare 2 classi?....ecco il mio puntiglio...se la cosa è 2 classi una di inizializzazione e una di verifica allora ok.

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    309
    basta una classe.
    per arrivare alla pagina dove inserisci i dati non hai bisogno di classi, a meno che non hai bisogno di creare delle liste per popolare dei radio button oppuse la <s:select... , ho comunque degli elementi che hanno bisogno di liste per essere popolati
    basta che fai una prova:
    leva la classe sull'azione che ti manda al form di inserimento dati. alla classe che si occupa della action del form abbina il file di validazione e in questa classe crea i metodi set e get con il nome degli elementi del form.
    tomcat 6.016
    netbeans 6.1

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.