Struts祕籍之第2段:第3.7式: 動態產生JavaScript

問題

你想要根據從應用模型獲得的數據動態產生JavaScript。

動作要領

使用Struts 標籤在你想要包含在HTML中的JavaScript 代碼中渲染數據:

<script language="JavaScript">
    
function showMessage(  ) {
        alert( 
"Hello, <bean:write name='myForm' property='name'/>!" );
    }

</script>

 

動作變化

上述方案產生了一個JavaScript 函數,彈出一個消息框,消息文本爲"Hello, name!" name的值是使用bean:write標籤產生的。此方案展示了使用Struts 標籤創建JavaScript 和它們創建HTML一樣的容易。

JSTL也可以按這種方式使用。

雖然這種方法很明顯,但是很奇怪很多人都在問這個問題。通常問題還可能是:"我如何才能從Struts中調用HTML中的JavaScript 函數?" 技術上講,你並不能從Struts調用一個HTML頁面中的JavaScript 函數。Struts 和JSP 技術都運行在服務器端。相反,JavaScript確是在客戶端的瀏覽器中處理的。但是,通過這裏所述的動態產生JS的能力,基本上還是相當於所需的這個行爲。

這個方法的一個重要基礎是JSP的轉換過程。JSP 頁面由JSP 聲明,標準JSP 標籤 (比如jsp:useBean), 定製JSP 標籤(比如Struts 和JSTP 標籤), 運行是表達式,以及腳本小程序(scriptlets)組成。除此之外的其他東西都是模板文本(template text)。模板文本可以是任何不會被JSP轉換處理的內容。人們通常會認爲模板文本就是HTML 標記,但是它其實是JavaScript 或者其他非JSP 處理的文本。JSP 翻譯器並不關心模板文本採用何種形式。因此,你可以象在HTML元素中產生文本一樣容易地在JavaScript 函數中產生文本。

如果你使用JSP 來產生良構的(well-formed)XHTML, 那麼動態JavaScript 模版文本必須使用jsp:text元素和CDATA section的方式結合來指定。具體信息參見Hans Bergsten的ONJava 文章:http://www.onjava.com/pub/a/onjava/2004/04/21/JSP2part3.html

這裏的例子僅僅列出了很簡單的使用場景。如果要訪問的模型數據需要使用複雜的JavaScript數據結構,比如,數組,你可以使用迭代標籤,比如logic:iterate和c:forEach來組裝這些結構。

相關動作

下一動3.8或會使用迭代標籤來產生客戶端的JavaScript 數組。

 
發佈了3 篇原創文章 · 獲贊 0 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章