0

我必须用 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>
4

1 回答 1

0

刚刚尝试了小型 spring portlet 示例。我的表单也没有提交,但后来我发现 Spring MV Porlet ActionMapping 不起作用

然后我将我的 spring 版本更改为 3.2.3.RELEASE 但这不起作用,表单仍然没有提交。之后,我将 spring 表单标签更改为纯 html 表单标签,一切都变得很好。

<form method="post" action="${url}">
于 2013-11-13T22:33:52.233 回答