Liferay-Spring-Portlet ModelAttribute的值未设置

时间:2013-11-12 16:48:15

标签: java spring liferay portlet

我必须用Spring编写一个portlet,它只是获取一些用户输入。 首先,我在控制器的render方法中将一个自定义对象放到Model中。在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>

1 个答案:

答案 0 :(得分:0)

刚试过小春portlet的例子。我的表格也没有提交,但后来我发现了  Spring MV Porlet ActionMapping is not working

然后我将我的弹簧版本更改为3.2.3.RELEASE但这没有效果,表单仍未提交。 之后我将spring form标签更改为纯html表单标签,一切都变好了。

<form method="post" action="${url}">