2013-04-25 62 views
1

我與我的Spring MVC和JSP第一步做什麼,我試圖找出什麼是應該做以下的最佳方式:動態把JSP標籤的JSP頁面上

我需要創建一個動態頁面是由一些靜態HTML和根據我的業務邏輯出現在頁面上的一些動態小部件構成的。每個小部件都是一個帶有一些內容的div:一個小部件可能會顯示一個趨勢,而另一個小部件可能會顯示一個表等。我實際需要做的是決定運行時間哪個小部件放置在頁面中的特定位置並將其放置那裏。換句話說,我需要動態地用JSP標籤文件或其他任何可以提供小部件HTML的東西來替換JSP文件中的某個佔位符。我可以簡單地通過用一些if或switch語句包裝每個佔位符來做到這一點,但我想知道是否有更乾淨的方法來做到這一點。

感謝, Yosi

回答

1

JSP動態包含可以解決你的問題。請檢查一次該概念。

0

JSP作爲服務器端技術,不能參與運行時事件(即用戶加載頁面後);一旦呈現的響應(即HTML)離開服務器並開始瀏覽用戶的瀏覽器,JSP的作用就結束了。如果你想改變內容,你只能通過發出另一個請求來獲取它。

有幾種技術可以幫助您組裝來自較小構建塊(例如JSP包含,Apache Tiles等)的HTML響應,但根據定義,它們只能對預先知道的請求參數做出反應請求時間。

如果你需要運行時的靈活性,您可以:

  • 總是建立一個「全」,該網頁包含所有可能的部件,並將其返回給所有用戶,但做一些初步隱藏要素(通過CSS) ,用戶對小部件的請求只會使其可見
  • 通過AJAX從服務器請求HTML片段,並使用JavaScript將它們附加到頁面上。
+0

我的意思是如何在服務器端做到這一點。給它一些想法,我真正需要的是在Spring將它轉換爲HTML之前,將JSP include語句動態地插入到視圖(JSP文件)中的一種方法。可能嗎? – Yosef 2013-04-25 16:49:07

2

如果您想在代碼中立即看到包含IDE代碼導航支持的內容,則需要使用<c:when>列表。

動態包含(例如<jsp:include page="${widgetName}" />)會使代碼確實短得多,但也不太容易理解發生了什麼。