2012-10-28 57 views
0

我正在使用JSP標記文件將「小部件」添加到我的應用程序頁面。Struts2中的動態JSP標記文件

是否可以執行與JSP標記文件相關的操作,因此它將像動態內容一樣填充,就像普通頁面一樣,然後在某處「注入」?

假設我有這樣的標籤文件:<c:onlinemembers />。它顯示在線成員的列表。 我需要在顯示動態數據之前用它來填充它。

有什麼建議嗎?

+0

使用JSP調用標記。將JSP與將通過AJAX調用的操作相關聯。 JSP只能返回必要的片段HTML。 –

+0

看看Apache瓷磚提供了什麼。作爲一個模板解決方案,它很好,它不會消除對Ajax的需求,但是你將能夠很好地分解事情,這樣你就可以看到你的組件。 – Quaternion

回答

0

編輯:正如Alexandr指出的那樣,這在Struts 2.0.x中很好,Struts集成了Dojo標籤。從Struts 2.1.x開始,應該使用jQuery(具有類似的機制)。

全部取決於您的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+"&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代碼片段的結果。就是這樣...

+0

「內置」道場?真?實際上它是一個插件,Struts2 dojo插件已被棄用。還有其他的Struts2的javascript插件。例如http://code.google.com/p/struts2-jquery/。 –

+0

我們被困在2.0.14 ...(它內置的地方,struts-tags和struts-dojo-tags之間沒有分隔):S 感謝您指出它,不知道它已被棄用。 –

+0

不客氣。 –

0

我會使用Ajax並將數據作爲JSON返回並使用jQuery顯示,或創建一個自定義JSP標記來執行此操作。我並不喜歡後者。從您的操作中返回JSON並使用jQuery是一種簡單的方法。希望這可以幫助。