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