向spring 2.0控制器发送帖子请求

时间:2015-07-14 10:00:52

标签: forms spring-mvc post controller

我在这样的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对象。

我在这个设置中做错了什么?

1 个答案:

答案 0 :(得分:0)

哇,那是老派!

我没看到你在html中调用的myapp / profile / save.do端点在哪里定义。

你真的应该使用spring jsp标签:

<form:form method="POST"commandName="profileFbo">

应该点击正确的后端端点。

你知道你不应该再处理这样的表格,对吗?