我正在使用JSP标记文件将“小部件”添加到我的应用程序页面。
是否可以将操作与JSP标记文件相关联,因此它将像普通页面一样填充动态内容,然后在某个地方“注入”?
假设我有这样调用的标记文件:<c:onlinemembers />
。它显示在线成员列表。
我需要有一种方法在显示动态数据之前填充它。
有什么建议吗?
答案 0 :(得分:0)
我会使用Ajax并将数据作为JSON返回并使用jQuery显示或创建自定义JSP标记来执行此操作。我不是很喜欢后者。从您的操作中返回JSON并使用jQuery是一种简单的方法。希望这可以帮助。
答案 1 :(得分:0)
一切都取决于您的Struts2版本。
或者您可以使用内置的Struts2 / Dojo AJAX功能。
<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片段作为结果。就是这样......