0

JSPタグファイルを使用して、アプリケーションページに「ウィジェット」を追加しています。

アクションをJSPタグファイルに関連付けることは可能ですか。そのため、通常のページと同じように動的コンテンツが入力され、どこかに「挿入」されますか?

次のように呼び出すタグファイルがあるとします<c:onlinemembers />。オンラインメンバーのリストが表示されます。表示する前に動的データを入力する方法が必要です。

助言がありますか?

4

2 に答える 2

0

Ajaxを使用してデータをJSONとして返し、jQueryを使用して表示するか、カスタムJSPタグを作成してそれを実行します。私は後者があまり好きではありません。アクションからJSONを返すだけで、jQueryを使用するのは簡単なアプローチです。お役に立てれば。

于 2012-10-28T20:04:09.677 に答える
0

編集:Alexandrが指摘しているように、これはStrutsがDojoタグを統合しているStruts2.0.xで有効です。Struts 2.1.x以降、代わりにjQueryを使用する必要があります(同様のメカニズムで)。

すべてStruts2のバージョンによって異なります。


または、組み込みのStruts2 /DojoAJAX機能を使用できます。

<head>
    <script type="text/javascript">
      // Scripts executed when loading the JSP:
      function configPage(){
        // Dojo topic function subscribing:
        dojo.event.topic.getTopic("myTopic").subscribe(null, "updateDivFunction");
      }

      function updateDivFunction(param1, param2){
        // Get the Div
        var myDiv = dojo.widget.byId("myDynamicDiv"); 

        // Set a new href to the AJAX action to call, 
        // which will return a partial JSP (a snippet),
        // as mapped normally in struts.xml...      
        myDiv.href = "loadDynamicDivAjax.do?param1="+param1+"&param2="+param2;

        // Force the div to reload with AJAX now.
        resultDiv.refresh();
      }

      function updateDivWrapper(param1, param2){
        // Publishing the topic now, will invoke the 
        // "updateDivFunction" set in configPage()...
        dojo.event.topic.publish("myTopic", param1, param2);
      }


    </script>
</head>

<body onload="javascript:configPage();">
    <h1>My main JSP page</h1>

    <br/><br/>

    <s:div id="myDynamicDiv" theme="ajax" 
           loadingText="Loading..." 
           errorText="Errors occurred...">
    </s:div>

    <br/>

    <span>
        Click below links to load the DIV with DOJO 
        through an AJAX call, and different parameters.
    </span>

    <br/><br/>

    <a href="javascript:updateDivWrapper('1','2')">
        Update with param1=1 and param2=2
    </a>

    <br/><br/>

    <a href="javascript:updateDivWrapper('8','9')">
        Update with param1=8 and param2=9
    </a>
</body>

Struts.xmlでは、loadDynamicDivAjaxActionをマップして、結果として通常のJSPスニペットを返す必要があります。それでおしまい...

于 2012-10-29T10:05:16.883 に答える