0

Liferay portal-6 を で使用していSpring-3ます。

私のポートレットでは、最初に@Rendermappingparams なしに移動し、デフォルトの 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 に答える