我在这样的html页面上有一个表单:
<form id="profileForm" method="post" action="myapp/profile/save.do">
<input type="text" name="profileList[0].name" value="Jane"/>
<input type="text" name="profileList[1].name" value="John"/>
<input type="text" name="profileList[2].name" value="Alice"/>
</form>
当我提交此表单时,一个post请求被发送到spring dispatcher servlet,它调用我的控制器:
public class Save extends SimpleFormController
{
@Override
protected Object formBackingObject(HttpServletRequest request) throws Exception
{
//This method runs fine.
ProfileFbo ProfileFbo = new ProfileFbo();
return ProfileFbo;
}
@Override
protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors) throws Exception
{
//This method doesn't run
Map<String, Object> modelData = new HashMap<String, Object>();
return showForm(request, response, errors, modelData);
}
}
第一种方法运行,第二种方法不运行。将提交的数据绑定到我的fbo必须出错?这是我的fbo,它只是profileDto对象列表的容器:
public class ProfileFbo
{
private List<ProfileDto> profileList;
public List<ProfileDto> getProfileList()
{
return profileList;
}
public void setProfileList(List<ProfileDto> profileList)
{
this.profileList = profileList;
}
}
当然,profileDto对象有一个名为“name”的属性和一个appriopate getter / setter。
这是我的spring.xml配置:
<bean id="profileSaveController" class="com.company.profile.controller.Save">
<property name="successView" value="profileOverviewPageTile"/>
<property name="commandName" value="profileFbo"/>
<property name="commandClass" value="com.company.profile.fbo.ProfileFbo"/>
</bean>
正如您所看到的,我没有使用此控制器来执行GET请求,因此我并没有真正充分利用弹簧形式控制器功能。这纯粹是为了做POSt请求并将表单绑定到fbo对象。
我在这个设置中做错了什么?
答案 0 :(得分:0)
我没看到你在html中调用的myapp / profile / save.do端点在哪里定义。
你真的应该使用spring jsp标签:
<form:form method="POST"commandName="profileFbo">
应该点击正确的后端端点。
你知道你不应该再处理这样的表格,对吗?