ユーザー入力を取得するだけのポートレットを Spring で作成する必要があります。まず、コントローラーの render メソッドでカスタム オブジェクトを Model に配置します。jsp ファイルでは、このオブジェクトにアクセスでき、フォームでオブジェクトのパラメーターを設定したいと考えています。(<form:form ...>
値の設定に使用します)。
@ModelAttribute
送信ボタンの後、要求されたメソッドとパラメーターを使用してオブジェクトを取得したいと思います。ただし、オブジェクトのパラメーターは変更されておらず、null です。オブジェクトをモデルに追加する前にそれらのいずれかを設定すると、送信ボタンの後にこの値が取得されますが、変更できません。リクエストされたメソッドには注釈が付けられています@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>