0

JavaScript から特定のパラメーターを使用してポートレットにリダイレクトしようとしています。ユーザーがクリックしたリンクに基づいてパラメーターを取得し (この部分は問題ありません。必要なすべてのデータを取得します)、その後、単純な JS window.location. で取得しようとする URL を作成します。

私のコントローラー:

@RenderMapping
public String view(Model model){
    model.addAttribute("some", "stuff");
    return "myPortlet/view";
}

@ActionMapping(params = "action=importantAction")
public void doAction(ActionRequest request, ActionResponse response){
    String foo = request.getParameter("one");
    String bar = request.getParameter("two");
    System.out.println("Got " + one + " & " + two);
}

私のJS:

function myFunction(one_val, two_val){
    window.location = "http://www.my.url.com/nameOfMyPortlet?one=" + one_val +
        + "&two=" + two_val + "&action=importantAction";
}

これにより正しいページにリダイレクトされますが、アクション パラメータは無視され続け、doAction メソッド全体が実行されません。

アクション パラメータを JavaScript からターゲット ポートレットに渡す方法は?

私はLiferayとSpring MVCを使用しています..

ありがとう!

4

2 に答える 2

1

私はそれがどのように機能するかを見つけることができました-それは @Ankit P が書いたものと非常に似ています:

パラメータの非表示フィールドを作成し、URL を作成するフォームを送信しました。

JSP:

<liferay-portlet:actionURL var="link">
    <liferay-portlet:param name="action" value="importantAction"/>
</liferay-portlet:actionURL>
<form action="${link}" method="POST" name="the-form" id="the-form">
    <input type="hidden" value="" name="one" id="one"/>
    <input type="hidden" value="" name="two" id="two"/>
</form>

JS:

function myFunction(one_val, two_val) {
    document.getElementById("one").value = one_val;
    document.getElementById("two").value = two_val;
    document.getElementById("the-form").submit();
}    

コントローラーはそのまま。使用@ActionMappingするには、POST メソッドを使用する必要があります。

于 2013-10-28T14:26:10.450 に答える