gpt4 book ai didi

java - Spring 3.0 MVC 绑定(bind)嵌套对象

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:24:02 25 4
gpt4 key购买 nike

为什么 spring 不绑定(bind)嵌套对象上的值?

RegistrationBean 上的 SecurityQuestion 对象分别将问题和答案设置为 null、null,尽管在 View 中使用 bean 表示法在表单中设置 then。

bean 类:

public class SecurityQuestion {
SecurityQuestionType type;
String answer;
}

public class RegistrationBean {
@Valid
SecurityQuestion securityQuestion;
String name;


public SecurityQuestionType[] getSecurityQuestionOptions() {
return SecurityQuestionType.values();
}
}

查看:

<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>

Controller :

@RequestMapping(value = URL_PATTERN, method = RequestMethod.POST)
public ModelAndView submit(@Valid final RegistrationBean registrationBean) {
// registrationBean.getSecurityQuestion().getQuestion() == null
// registrationBean.getSecurityQuestion().getAnswer() == null
}

解决方案

所有 bean 的所有字段都必须有 getters/setters。 Spring 使用默认构造函数,然后使用 setter 来改变 View 中的对象。

最佳答案

您能否尝试为 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();
}
}

关于java - Spring 3.0 MVC 绑定(bind)嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4391341/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com