7

ポートレットの processAction メソッドを呼び出す jsp ファイル内で ajax 呼び出しを行いたいのですが、processAction メソッドからの成功メッセージに基づいて、ポートレットの serveResource メソッドをもう一度呼び出す必要があります。いくつかの例を提供してください。

4

4 に答える 4

10

ポートレットでは、processAction()メソッドの後にrenderメソッドが自動的に続くため、ajax応答はrenderメソッドによって生成されたHTMLフラグメントに埋め込まれます。したがって、portletでajaxを作成するのは少し注意が必要です。

私のこのブログを見てください。

http://ajax-and-portlets.blogspot.com/2011/09/ajax-best-practice-in-portlets.html

これは、ポートレットにajaxを実装するためのベストプラクティス(JSR-168とJSR-286の両方のポートレット)の洞察を提供します。

サンプルのポートレットが必要な場合は、ブログの連絡先の詳細から私に連絡できます。喜んでお手伝いさせていただきます。

ありがとうJignesh

于 2011-09-29T13:52:27.463 に答える
3

この質問は私にとってはうまくいきました。

基本的にはコントローラー

@Controller
@RequestMapping("VIEW") // VIEW mapping (as opposed to EDIT)
public class MyPortlet {
    @RenderMapping
    public String handleRenderRequest(RenderRequest request, RenderResponse response) {
        return "defaultRender";
    }

    @ResourceMapping("myURL")
    public void handleMyResource(ResourceRequest request, ResourceResponse response) {
        OutputStream outStream;
        try {
            outStream = response.getPortletOutputStream();
            ObjectMapper mapper = new ObjectMapper();

            mapper.writeValue(outStream, "Hello world!");
        } catch (IOException ex) {
            // TODO : Do something with errors.
        }
    }
}

そしてJSP:

<portlet:resourceURL id="myURL" var="myURL"/>

<script type="text/javascript">
    var urlink = "<%= myURL %>";
    $.ajax({
        url: urlink,
        cache: false,
        type: "POST",
        success: function(jsondata) {
            console.log(jsondata);
        }
    });
</script>
于 2013-05-08T19:38:23.567 に答える
0

processAction メソッドからの成功メッセージに基づいています。これは正しい方法ではありません。応答でポートレット アクション URL を呼び出すと、通常のレンダリング応答が返されるため、すべてのポートレットを含むページが表示されます。代わりに、ポートレット 2.0 のリソース サービング機能を使用して、応答をリソースとして返す必要があります。

于 2011-09-09T15:16:16.857 に答える
0

serveResource メソッドと processAction メソッドの両方の呼び出しの例を含む私のポートレットを確認できます。 Ajax Jquery ポートレット

于 2012-05-11T11:32:40.883 に答える