0

我正在使用 Liferay portal-6 和Spring-3.

在我的 portlet 中,首先它转到@Rendermapping不带参数并显示默认 jsp,当我单击一个按钮时,我正在传递actionurl,但它不会转到相应的@Actionmapping.

我的searchForm.jsp样子是这样的:

<portlet:actionURL var="showSearchResultsUrl">
    <portlet:param name="myaction" value="searchResults" />
</portlet:actionURL>

<form:form id="searchForm" name="searchForm" commandName="patientStoryForm"    method="POST" action="${showSearchResultsUrl}" enctype="multipart/form-data" >
    <input type="button" name="search_btn" value="Search"/></td>
</form:form>

我的控制器是这样的:

@Controller(value = "searchPatientStoryController")
@RequestMapping(value = "VIEW")
@SessionAttributes(types = PatientStoryForm.class)
public class SearchPatientStoryController {

    @RenderMapping
    public String showSearchForm(RenderResponse response, Model model) {
        return "searchForm";
    }

    @RenderMapping(params = "myaction=searchResultsForm")
    public String showSearchResultsForm(RenderResponse response, Model model) {
        return "searchResultsForm";
    }

    @ActionMapping(params = "myaction=searchResults")
    public void searchResults(
        @ModelAttribute(value = "patientStoryForm") PatientStoryForm patientStoryForm,
        BindingResult bindingResult, ActionResponse response, ActionRequest request,
        SessionStatus sessionStatus, Model model) {

        response.setRenderParameter("myaction", "searchResultsForm");
    }
}

当我点击按钮时,searchForm.jsp它应该去,@Actionmapping但它没有去。

请帮我。

提前致谢。

4

3 回答 3

2

您需要提交表单才能调用相关的操作方法

但是,在 jsp 代码中,我看到下面的代码表明它只是一个按钮。

<input type="button" name="search_btn" value="Search"/>

为了提交表单,您可以执行以下任一方式:

  1. 使用提交按钮而不是普通的表单按钮,如下所示:

    <input type="submit" name="search_btn" value="Search"/>

  2. 在按钮的单击事件上调用 javascript 函数并提交表单:

<script type="text/javascript">
    function submitForm(form){
        var actionUrl = '<portlet:actionURL var="showSearchResultsUrl"><portlet:param name="myaction" value="searchResults"/></portlet:actionURL>';
        form.action = actionUrl;
        form.submit();
    }
</script>

<input type="button" name="search_btn" value="Search" onclick="javascript:submitForm(this.form)"/>

于 2012-11-21T19:24:46.713 回答
0

您可以尝试替换您的 actionURL,如下所示

<portlet:actionURL name="searchResults" var="showSearchResultsUrl"> 
        <portlet:param name="myaction" value="searchResults" /> 
</portlet:actionURL>
于 2012-06-16T01:22:10.847 回答
0

您需要设置表单的操作,如下所示:

<form:form action="<%=showSearchResultsUrl%>" id="searchForm" name="searchForm" commandName="patientStoryForm"    method="POST" action="${showSearchResultsUrl}" enctype="multipart/form-data" >
<input type="button" name="search_btn" value="Search"/></td>

这样,您的操作名称将是“myaction”,其值为“searchResults”作为控制器端的映射。

于 2012-11-21T10:28:03.187 回答