我正在使用Liferay portal-6和Spring-3。
在我的portlet中,它首先转到不带参数的@Rendermapping,并显示默认的actionurl,当我单击一个按钮时,我传递的是jsp,但它不会转到相应的@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,但它不会转到。
请帮帮我。
提前谢谢。
发布于 2012-11-22 03:24:47
为了调用关联的操作方法,您需要提交表单。
然而,在jsp代码中,我看到了下面的代码,它表明它只是一个按钮。
<input type="button" name="search_btn" value="Search"/>为了提交表单,您可以使用以下方法之一:
在按钮的点击事件上<input type="submit" name="search_btn" value="Search"/>
<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-06-16 09:22:11
您可以尝试像下面这样替换您的actionURL吗
<portlet:actionURL name="searchResults" var="showSearchResultsUrl">
<portlet:param name="myaction" value="searchResults" />
</portlet:actionURL>发布于 2012-11-21 18:28:03
您需要设置表单的操作,如下所示:
<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”,作为您在控制器端的映射。
https://stackoverflow.com/questions/11045933
复制相似问题