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スニペットを返す必要があります。それでおしまい...