dom*_*arr 7 java jsp spring-mvc spring-3 spring-form
为什么spring没有绑定嵌套对象上的值?
尽管在视图中使用bean表示法在表单中进行设置,但RegistrationBean上的SecurityQuestion对象分别设置为问题和答案为null,null.
豆子:
public class SecurityQuestion {
SecurityQuestionType type;
String answer;
}
public class RegistrationBean {
@Valid
SecurityQuestion securityQuestion;
String name;
public SecurityQuestionType[] getSecurityQuestionOptions() {
return SecurityQuestionType.values();
}
}
Run Code Online (Sandbox Code Playgroud)
视图:
<form:form modelAttribute="registrationBean" method="POST">
<form:select id="securityQuestion" path="securityQuestion.question">
<c:forEach var="securityQuestionOption" items="${securityQuestionOptions}">
<form:option value="${securityQuestionOption}">${securityQuestionOption</form:option>
</c:forEach>
</form:select>
<form:input id="securityAnswer" path="securityQuestion.answer" />
<form:input id="name" path="name" />
</form:form>
Run Code Online (Sandbox Code Playgroud)
控制器:
@RequestMapping(value = URL_PATTERN, method = RequestMethod.POST)
public ModelAndView submit(@Valid final RegistrationBean registrationBean) {
// registrationBean.getSecurityQuestion().getQuestion() == null
// registrationBean.getSecurityQuestion().getAnswer() == null
}
Run Code Online (Sandbox Code Playgroud)
解
所有bean都必须拥有所有字段的getter/setter.Spring使用默认构造函数,然后使用setter从视图中改变对象.
你能尝试给RegistrationBean一个合适的getter/setter吗?
public class RegistrationBean {
@Valid
SecurityQuestion securityQuestion;
String name;
public SecurityQuestion getSecurityQuestion(){
return securityQuestion;
}
public void setSecurityQuestion(SecurityQuestion q){
this.securityQuestion = q;
}
public SecurityQuestionType[] getSecurityQuestionOptions() {
return SecurityQuestionType.values();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8838 次 |
| 最近记录: |