2011-02-09 19 views
5

下記のコードをご覧ください。 4つのテキストボックスが表示されます。spring-mvcで同じ名前の<input>を複数扱う場合

私が以前のテキストボックスに "1"と "2"を入力した場合、それらはコンマで区切られた "1,2"として私の期待通りにバインドされます。

ただし、「2001/01/01」と「2001/01/02」の残りの2つのボックスに「2001/01/01」がバインドされています。 "2001/01/01"は驚くほど縛られているだけです。最初のパラメータはバインドする優先順位があるようです。

深く正確に理解するために、その仕様(HTTPまたはSpringMVCまたは...?)がどこで定義されているか知りたいですか?誰か助けてくれますか?

Form 
public class SampleForm { 

    private String name; 

    private Date date; 

    public Date getDate() { 
     return date; 
    } 

    public void setDate(Date date) { 
     this.date = date; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 
} 

JSP 
<form:form modelAttribute="form" method="post"> 
    <form:input path="name" /> 
    <form:input path="name" /> 
    <form:input path="date" /> 
    <form:input path="date" /> 
    <p> 
     <input type="submit" name="register" value="register" /> 
    </p> 
</form:form> 

答えて

5

これは論理的です。複数の文字列はカンマで区切って1つの文字として表すことができます。複数のDateオブジェクトを1つのDateオブジェクトとして表すことはできません。

代わりにString[]Date[]を試してみることができます。

2
private List<Date> date= new ArrayList<Date>(); 

    public List<Date> getDate() { 
     return date; 
    } 
    public void setDate(List<Date> date) { 
     this.date= date; 
    } 

それはあなたの問題を解決します。

関連する問題