2016-04-07 1 views
0

Я довольно новый в Spring MVC, и у меня есть следующая проблема, пытаясь заполнить объект команды, передающий форму методу контроллера.Почему свойства ассоциированного объекта с переданной формой являются нулевыми в этом приложении Spring MVC?

Так что у меня следующая ситуация:

У меня есть этот класс команды объект с именем Step2Form:

public class Step2Form { 

    String nome; 
    String cognome; 
    int giornoNascita; 
    int meseNascita; 
    int annoNascita; 
    String nazioneNascita; 
    String regioneNascita; 
    String provinciaNascita; 
    String comuneNascita; 
    String sesso; 
    String eMail; 
    String confermaEmail; 
    String trattamentoDatiPersonali; 
    public String getNome() { 
     return nome; 
    } 
    public void setNome(String nome) { 
     this.nome = nome; 
    } 
    public String getCognome() { 
     return cognome; 
    } 
    public void setCognome(String cognome) { 
     this.cognome = cognome; 
    } 
    public int getGiornoNascita() { 
     return giornoNascita; 
    } 
    public void setGiornoNascita(int giornoNascita) { 
     this.giornoNascita = giornoNascita; 
    } 
    public int getMeseNascita() { 
     return meseNascita; 
    } 
    public void setMeseNascita(int meseNascita) { 
     this.meseNascita = meseNascita; 
    } 
    public int getAnnoNascita() { 
     return annoNascita; 
    } 
    public void setAnnoNascita(int annoNascita) { 
     this.annoNascita = annoNascita; 
    } 
    public String getNazioneNascita() { 
     return nazioneNascita; 
    } 
    public void setNazioneNascita(String nazioneNascita) { 
     this.nazioneNascita = nazioneNascita; 
    } 
    public String getRegioneNascita() { 
     return regioneNascita; 
    } 
    public void setRegioneNascita(String regioneNascita) { 
     this.regioneNascita = regioneNascita; 
    } 
    public String getProvinciaNascita() { 
     return provinciaNascita; 
    } 
    public void setProvinciaNascita(String provinciaNascita) { 
     this.provinciaNascita = provinciaNascita; 
    } 
    public String getComuneNascita() { 
     return comuneNascita; 
    } 
    public void setComuneNascita(String comuneNascita) { 
     this.comuneNascita = comuneNascita; 
    } 
    public String getSesso() { 
     return sesso; 
    } 
    public void setSesso(String sesso) { 
     this.sesso = sesso; 
    } 
    public String geteMail() { 
     return eMail; 
    } 
    public void seteMail(String eMail) { 
     this.eMail = eMail; 
    } 
    public String getConfermaEmail() { 
     return confermaEmail; 
    } 
    public void setConfermaEmail(String confermaEmail) { 
     this.confermaEmail = confermaEmail; 
    } 
    public String getTrattamentoDatiPersonali() { 
     return trattamentoDatiPersonali; 
    } 
    public void setTrattamentoDatiPersonali(String trattamentoDatiPersonali) { 
     this.trattamentoDatiPersonali = trattamentoDatiPersonali; 
    } 


} 

, который отображает эту форму в вид:

 <form id="reg-form" name="reg-form" action="<@spring.url '/iscrizioneStep3' />" method="post"> 

      <fieldset> 

       <div class="form-group"> 
        <label for="name">Nome <span aria-hidden="true">*</span>:</label> 
        <input type="text" id="name" name="name" class="form-control input-mm" placeholder="Inserisci il tuo nome" data-validation="[NOTEMPTY]" data-validation-label="nome" aria-required="true" tabindex="10"> 
       </div> 

       <div class="form-group"> 
        <label for="surname">Cognome <span aria-hidden="true">*</span>:</label> 
        <input type="text" id="surname" name="surname" class="form-control input-mm" placeholder="Inserisci il tuo cognome" data-validation="[NOTEMPTY]" data-validation-label="cognome" aria-required="true" tabindex="20"> 
       </div> 

       <div class="form-group grouped"> 
        <label>Data di nascita <span aria-hidden="true">*</span>:</label> 
        <div class="row"> 
         <div class="col-xs-3 col-md-4"> 
          <select id="birth-day" name="birth-day" class="form-control selectpicker select-mm" title="Giorno" data-validation="[NOTEMPTY, INTEGER]" data-validation-label="giorno di nascita" aria-label="seleziona il giorno di nascita" aria-required="true" tabindex="30"> 
           <option value="01">01</option> 
           <option value="02">02</option> 
           <option value="03">03</option> 
          </select> 
         </div> 
         <div class="col-xs-5 col-md-5"> 
          <select id="birth-month" name="birth-month" class="form-control selectpicker select-mm" title="Mese" data-validation="[NOTEMPTY, INTEGER]" data-validation-label="mese di nascita" aria-label="seleziona il mese di nascita" aria-required="true" tabindex="40"> 
           <option value="01">Gennaio</option> 
           <option value="02">Febbraio</option> 
           <option value="03">Marzo</option> 
          </select> 
         </div> 
         <div class="col-xs-4 col-md-3"> 
          <select id="birth-year" name="birth-year" class="form-control selectpicker select-mm" title="Anno" data-validation="[NOTEMPTY, INTEGER]" data-validation-label="anno di nascita" aria-label="seleziona l'anno di nascita" aria-required="true" tabindex="50"> 
           <option value="2000">2000</option> 
           <option value="1999">1999</option> 
           <option value="1998">1998</option> 
          </select> 
         </div> 
        </div> 
       </div> 

       <div class="form-group"> 
        <label for="country">Nazione di nascita<span aria-hidden="true">*</span>:</label> 
        <select id="country" name="country" class="sel-dynamic sel-haschild form-control selectpicker select-mm" title="Seleziona la nazione" data-validation="[NOTEMPTY]" data-validation-label="nazione" aria-required="true" tabindex="60"> 
         <option value="italy">Italia</option> 
         <option value="estero">Estero</option> 
        </select> 
       </div> 

       <div class="form-group"> 
        <label for="region">Regione di nascita<span aria-hidden="true">*</span>:</label> 
        <select id="region" name="region" class="sel-dynamic sel-haschild form-control selectpicker select-mm" title="É necessario selezionare una regione..." data-validation="[NOTEMPTY]" data-validation-label="regione" data-choice="Seleziona la regione" aria-required="true" disabled tabindex="70"> 
         <option disabled value="0">&nbsp;</option> 
        </select> 
       </div> 

       <div class="form-group"> 
        <label for="district">Provincia di nascita<span aria-hidden="true">*</span>:</label> 
        <select id="district" name="district" class="sel-dynamic sel-haschild form-control selectpicker select-mm" title="É necessario selezionare una provincia..." data-validation="[NOTEMPTY]" data-validation-label="provincia" data-choice="Seleziona la provincia" aria-required="true" disabled tabindex="80"> 
         <option disabled value="0">&nbsp;</option> 
        </select> 
       </div> 

       <div class="form-group clearfix"> 
        <label for="municipality">Comune <span aria-hidden="true">*</span>: </label> 
        <select id="municipality" name="municipality" class="sel-dynamic form-control selectpicker select-mm" title="É necessario selezionare un comune..." data-validation="[NOTEMPTY]" data-validation-label="comune" data-choice="Seleziona un comune" aria-required="true" disabled tabindex="90"> 
         <option disabled value="0">&nbsp;</option> 
        </select> 
       </div> 

       <div class="form-group"> 
        <label>Sesso <span aria-hidden="true">*</span>:</label> 
        <div class="genderbg clearfix"> 
         <label id="label-gender-m" class="radio-inline pull-left"> 
          <input id="gender-m" type="radio" name="gender" value="m" data-validation="[NOTEMPTY]" data-validation-label="sesso" aria-label="scelta sesso maschio" tabindex="100">Maschio 
         </label> 
         <label id="label-gender-f" class="radio-inline pull-right"> 
          <input id="gender-f" type="radio" name="gender" value="f" aria-label="scelta sesso femmina" tabindex="110">Femmina 
         </label> 
        </div> 
       </div> 

       <div class="form-group"> 
        <label for="email">Email <span aria-hidden="true">*</span>:</label> 
        <input type="text" id="email" name="email" class="form-control input-mm" placeholder="Esempio: [email protected]" data-validation="[NOTEMPTY, EMAIL]" data-validation-label="email" aria-required="true" tabindex="120"> 
       </div> 

       <div class="form-group"> 
        <label for="email-confirm">Conferma Email <span aria-hidden="true">*</span>:</label> 
        <input type="text" id="email-confirm" name="email-confirm" class="form-control input-mm" data-validation="[NOTEMPTY, V==email]" data-validation-label="conferma email" aria-required="true" tabindex="130"> 
       </div> 

       <div class="form-group"> 
        <label>Termini e condizioni:</label> 
        <p class="small">Dichiaro di aver letto e di accettare le <a href="#" title="Condizioni generali del servizio" tabindex="140">condizioni generali</a></p> 
        <label id="label-gencond" class="radio-inline"> 
         <input id="gencond" type="radio" name="gencond" value="y" data-validation="[NOTEMPTY]" data-validation-label="termini e condizioni" tabindex="150"><strong>Accetto</strong> 
        </label> 
       </div> 

       <div class="form-group"> 
        <label>Trattamento dei dati personali:</label> 
        <p class="small">I dati raccolti saranno utili a soddisfare le tue richieste, a migliorare i nostri servizi e a poterti comunicare le nostre novità.<br> 
        Leggi l' <a href="" title="Informativa sulla privacy" tabindex="160">informativa sulla privacy</a> e, se vuoi, presta il consenso.</p> 
        <label id="label-privacy-y" class="radio-inline"> 
         <input id="privacy-y" type="radio" name="privacy" value="y" data-validation="[NOTEMPTY]" data-validation-label="privacy" tabindex="170"><strong>Accetto</strong> 
        </label> 
        <label id="label-privacy-n" class="radio-inline"> 
         <input id="privacy-n" type="radio" name="privacy" value="n" tabindex="180"><strong>Non Accetto</strong> 
        </label> 

       </div> 

       <button type="submit" class="btn btn-block submit-btn" aria-label="prosegui la registrazione" tabindex="190">Passaggio 3</button> 

      </fieldset> 

     </form> 

Finnally I имеют этот метод контроллера, который обрабатывает представление предыдущей формы:

@RequestMapping(value = "/iscrizioneStep3", method=RequestMethod.POST) 
public String iscrizioneStep3(@ModelAttribute("SpringWeb")Step2Form step2Form, ModelMap model, HttpServletRequest request) { 

    System.out.println("INTO iscrizioneStep3()"); 
    System.out.println("NOME: " + step2Form.getNome()); 


    return "iscrizioneStep3"; 
} 

Когда я отправить форму его войти в iscrizioneStep3() метода, но проблема в том, что, когда он отправится на выполнение:

System.out.println("NOME: " + step2Form.getNome()); 

это то, что получить в моей консоли Eclipse:

19:39:00,874 INFO [stdout] (http-localhost/127.0.0.1:8080-1) NOME: null 

Поэтому он не установил поле nome моего объекта команды.

Почему? Что не так? Что мне не хватает? Как я могу исправить это?

+0

Поскольку нет никакого параметра «nome' есть параметр' name' ... Поэтому ничего не будет связано. –

ответ

0
<input type="text" id="name" name="name" class="form-control input-mm" placeholder="Inserisci il tuo nome" data-validation="[NOTEMPTY]" data-validation-label="nome" aria-required="true" tabindex="10"> 
      </div> 

Должно быть

<input type="text" id="nome" name="nome" class="form-control input-mm" placeholder="Inserisci il tuo nome" data-validation="[NOTEMPTY]" data-validation-label="nome" aria-required="true" tabindex="10"> 
      </div> 

или я упускаю что-то еще здесь?

Основном весной отображает поля на «имя» атрибута соответствующей переменной в классе (<input type="hidden" name="tester" /> следует сопоставить с переменной с именем «тестер».