JSPタグファイルを使用して、アプリケーションページに「ウィジェット」を追加しています。
アクションをJSPタグファイルに関連付けることは可能ですか。そのため、通常のページと同じように動的コンテンツが入力され、どこかに「挿入」されますか?
次のように呼び出すタグファイルがあるとします<c:onlinemembers />。オンラインメンバーのリストが表示されます。表示する前に動的データを入力する方法が必要です。
助言がありますか?
Ajaxを使用してデータをJSONとして返し、jQueryを使用して表示するか、カスタムJSPタグを作成してそれを実行します。私は後者があまり好きではありません。アクションからJSONを返すだけで、jQueryを使用するのは簡単なアプローチです。お役に立てれば。
編集: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+"¶m2="+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スニペットを返す必要があります。それでおしまい...