訪問部分網站內容在Liferay中短版如何內JSP
我已經定義了一個自定義的Web內容結構;現在我想在自定義portlet的基於JSP的視圖中訪問併發出結構中定義的一個字段。
我正在尋找完全服務器端的東西,理想情況下完全是在JSP內完成的(即沒有自定義控制器邏輯,沒有Javascript)。我可以用少量的servlet代碼和/或奇怪的JSTL。
較長的版本
我建立一個顯示某些用戶數據自定義Portlet。如果給定的用戶有沒有數據顯示,我想提供一些靜態內容。實際上有一些特殊的場景,而不是正常的數據顯示,我想顯示幾條靜態內容之一。
爲了便於維護,我將這些靜態內容作爲portlet-instance配置的一部分。由於我預計廣泛使用portlet以及希望在一個地方管理這些靜態塊,我打算創建一個新的Web內容結構來爲每個靜態場景捕獲單獨的,命名的HTML blob。然後,Portlet實例將被配置爲依靠ID中的那條Web內容。其結果是網站維護人員將能夠更新單個Web內容,並且整個網站中的所有Portlet實例都將自動反映該更改。
在其他Portlet,我利用了<liferay-ui:journal-article>
標籤發出Web內容(在portlet的實例配置標識),如全部內容:
<liferay-ui:journal-article
groupId="${_config_templateGroupId}"
articleId="${_config_templateArticleId}"
/>
然而,在這種情況下,我想只發出一個由結構定義的字段。
The official wiki提到journal-article標籤接受可選templateId
屬性。我想我可以通過爲每個場景定義單獨的模板來完成這項工作,每個場景只發布結構中所需的字段。但是,wiki也注意到templateId
在版本6.0.2之前被忽略 - 我正在使用6.0 EE; Sadface少校。
我對任何可能存在的替代品很感興趣。我顯然可以將整個內容發佈到一個隱藏的元素中,然後使用Javascript將相關內容移動到聚光燈下 - 但作爲前端開發人員,這觸犯了我對基本文檔預編寫腳本的最低準確性的敏感度。
所以:沒有Javascript或基於CSS的技巧(又名煙鏡)。只有100%基於服務器的解決方案才能夠完全在相對簡單的JSP內部實施。
授予我的願望,O偉大而可怕的互聯網!
這一切是超級有趣。我將在今天進行實驗並使用我的結果更新此主題。謝謝! – Tom
更新:我的第二個實驗是有缺陷的。你是對的:'templateId' * *在我的Liferay版本中得到了尊重,並且我能夠實現我期望的方法。謝謝! – Tom