我正在使用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
,但它不会继续。
请帮帮我。
提前致谢。
答案 0 :(得分:2)
您需要提交表单才能调用相关的操作方法。
但是,在jsp代码中,我看到下面的代码表明它只是一个按钮。
<input type="button" name="search_btn" value="Search"/>
要提交表单,您可以执行以下任一方式:
使用提交按钮代替普通表单按钮,如下所示:
<input type="submit" name="search_btn" value="Search"/>
在按钮的点击事件上调用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)"/>
答案 1 :(得分:0)
您可以尝试更换您的actionURL,如下所示
<portlet:actionURL name="searchResults" var="showSearchResultsUrl">
<portlet:param name="myaction" value="searchResults" />
</portlet:actionURL>
答案 2 :(得分: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”作为你在控制器端的映射。