我必须用 Spring 编写一个 portlet,它只是获取一些用户输入。首先,我在控制器的渲染方法中将自定义对象放入模型。在 jsp 文件中我可以访问这个对象,并且我想用一个表单来设置对象的参数。(我<form:form ...>
用于设置值)。
在提交按钮之后,我想使用带有@ModelAttribute
参数的请求方法获取对象。但是对象的参数没有改变,它们是空值。如果我在将对象添加到模型之前设置了其中一个,我会在提交按钮之后得到这个值,但我无法更改它。请求的方法带有注释@ActionMapping(params = "action=actionName")
这是控制器:
@Controller(value = "SpringMVCController")
@RequestMapping("VIEW")
public class SpringMVCController {
@RenderMapping
public String handleRenderRequest(RenderRequest request, RenderResponse response, Model model){
model.addAttribute("reservation", new Reservation());
return "defaultPage";
}
@ActionMapping(params = "action=addReservation")
public void addReservation(@ModelAttribute("reservation") Reservation reservation, BindingResult result,
ActionRequest request, ActionResponse response) {
System.out.println(reservation.getUrl());
}
}
这是jsp:
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<portlet:defineObjects/>
<portlet:actionURL var="addReservationURL">
<portlet:param name="action" value="addReservation"></portlet:param>
</portlet:actionURL>
<form:form method="POST" modelAttribute="reservation" action="${addReservationURL}">
<table>
<tr>
<td>From where(URL): </td>
<td><form:input path="url"/></td>
</tr>
<tr>
<td><input type="submit" value="OK" /></td>
</tr>
</table>
</form:form>