Java SpringMVCPortlet:表单未正确保存数据

Java SpringMVCPortlet:表单未正确保存数据,java,spring,jsp,spring-mvc,liferay,Java,Spring,Jsp,Spring Mvc,Liferay,我正在做这个教程: 除了最后一部分,一切都正常。 在我的电脑上,客户表单正确显示。但是,如果我将客户的详细信息设置到表单中,当我验证表单时,客户不会被保存。 因此,下一个jsp(success.jsp)找不到保存的Customer,因此显示一个包含空数据的新客户 我的版本和教程之间的唯一区别是,我必须从Maven构建项目,但这不会改变任何东西 监控确认数据正确输入form.jsp,因为我可以通过以下方式获得正确答案: System.out.println(“\n客户:”+request.get

我正在做这个教程:

除了最后一部分,一切都正常。 在我的电脑上,客户表单正确显示。但是,如果我将客户的详细信息设置到表单中,当我验证表单时,客户不会被保存。 因此,下一个jsp(success.jsp)找不到保存的Customer,因此显示一个包含空数据的新客户

我的版本和教程之间的唯一区别是,我必须从Maven构建项目,但这不会改变任何东西

监控确认数据正确输入form.jsp,因为我可以通过以下方式获得正确答案: System.out.println(“\n客户:”+request.getAttribute(“客户”)+“\n”)

下面是class.jsp:

    <%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
    <%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>

    <%System.out.println("\ncustomer : " + request.getAttribute("customer") + "\n"); %>


<portlet:actionURL var="submitFormURL" name="handleCustomer"/>
<form:form name="customer"  method="post" modelAttribute="customer" action="<%=submitFormURL.toString() %>"> <%-- onSubmit="displayParams"> --%>  


    <br/>
        <table style="margin-left:80px">
            <tbody>
                <tr>
                    <td><form:label path="firstName">First Name</form:label></td>
                    <td><form:input path="firstName"></form:input></td>
                </tr>
                <tr>
                    <td><form:label path="middleName">Middle Name</form:label></td>
                    <td><form:input path="middleName"></form:input></td>
                </tr>
                <tr>
                    <td><form:label path="lastName">Last Name</form:label></td>
                    <td><form:input path="lastName"></form:input></td>
                </tr>
                <tr>
                    <td><form:label path="age">Age</form:label></td>
                    <td><form:input path="age"></form:input></td>
                </tr>
                <tr>
                    <td><form:label path="address">Address</form:label></td>
                    <td><form:input path="address"></form:input></td>
                </tr>

                <tr>
                    <td colspan="2"><input type="submit" value="Submit Form">
                    </td>
                </tr>
            </tbody>
        </table>
    </form:form>
你知道什么会阻止它工作吗??
Thx提前

我想到的几件事你可以试试:

改变这个

model.addAttribute("successModel", customer);
进入这个

model.addAttribute("customer", customer);

您可以使用以下命令,而不是使用
name
modeldattribute
commandName=“customer”



可能是
之后缺少空格,您可能正在使用Liferay 6.2+,如果是这样的话,您应该设置它(Spring不是名称空间参数-请参阅)


描述摘自

声明在哪里?我认为他需要发送一些帖子或将回复发送到spring mvc主干网…抱歉,在编辑中添加。我在上一次复制粘贴中错过了它们。两个建议的结果相同。嗨,马丁,非常感谢你的建议。我很高兴你的问题解决了。根据portlet规范,参数必须具有名称空间,并且Liferay(从版本6.2开始)更改了其行为。但是为了向后兼容,他们引入了这个(需要有名称空间的参数)设置。
model.addAttribute("customer", customer);
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
    <requires-namespaced-parameters>false</requires-namespaced-parameters>
Element : requires-namespaced-parameters
Set the requires-namespaced-parameters value to true if the 
 portlet will only process namespaced parameters. The default 
 value is true.