首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Portlet:actionurl不会转到控制器中的@Actionmapping

Portlet:actionurl不会转到控制器中的@Actionmapping
EN

Stack Overflow用户
提问于 2012-06-15 14:53:16
回答 3查看 5.6K关注 0票数 0

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

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

我的searchForm.jsp看起来像这样:

代码语言:javascript
复制
<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>

我的控制器是这样的:

代码语言:javascript
复制
@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,但它不会转到。

请帮帮我。

提前谢谢。

EN

回答 3

Stack Overflow用户

发布于 2012-11-22 03:24:47

为了调用关联的操作方法,您需要提交表单。

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

代码语言:javascript
复制
<input type="button" name="search_btn" value="Search"/>

为了提交表单,您可以使用以下方法之一:

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

在按钮的点击事件上<input type="submit" name="search_btn" value="Search"/>

  • Invoke一个javascript函数,并提交表单:

代码语言: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)"/>

票数 2
EN

Stack Overflow用户

发布于 2012-06-16 09:22:11

您可以尝试像下面这样替换您的actionURL吗

代码语言:javascript
复制
<portlet:actionURL name="searchResults" var="showSearchResultsUrl"> 
        <portlet:param name="myaction" value="searchResults" /> 
</portlet:actionURL>
票数 0
EN

Stack Overflow用户

发布于 2012-11-21 18:28:03

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

代码语言:javascript
复制
<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”,作为您在控制器端的映射。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11045933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档