我有一个将数据发布到Inquiry对象的表单。 Inquiry对象是Controller中的ModelAttribute,它没有明确定义的构造函数。尽管在我的表单中将age
输入元素的value属性设置为空字符串,但它仍然为零。这让我觉得它从查询对象获得age
的现有值,我们将其初始化为零。有没有办法仍然发布到enquiry.age
,但没有在我的页面上显示它的当前值?
我的表格
<form:form commandName="enquiry" method="post" action="mycontext/jsp/enquiry-search">
<form:input path="name" value=""/>
<form:input path="age" value=""/>
</form:form>
我的控制器的一部分
@RequestMapping( value = "/enquiry/{screenType}", method = {RequestMethod.GET, RequestMethod.POST})
@ResponseStatus( HttpStatus.OK )
public String getEnquiryScreen(@ModelAttribute ("enquiry") Enquiry enquiry, @PathVariable("screenType") String screenType) {
return "enquiry";
}
@ModelAttribute( "enquiry" )
public Enquiry getEnquiry() {
return new Enquiry();
}
我的咨询课
public class Enquiry {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
答案 0 :(得分:0)
Thats not how model attributes work.
如果您查询了一个模式分发,那么您的表单无效。
我会有两个方法,一个用于get,一个用于post,POST可以将Inquiry作为一个方法参数与ModelAttribute annaotion一起使用。这将确保对象从请求中获取,而不是使用模型属性公开的方法 - 这只是实例化一个新实例。