2014-02-12 67 views
0

讓我們來看一個(Liferay掛鉤插件) Eclipse項目XYZ掛機。 而讓有a.jsp如何在Eclipse中配置項目,以便可以正確驗證jsps,包括<@include file =「...」><%@ page import =「...」>

<% @include file="/html/portal/init.jsp" %> 
<% InitImportedClass.yxz(); %> 

的文件,並讓那裏成爲在另一個(引用)項目包括init.jsp。

<% @page import="de.company.InitImportedClass" %> 

對於a.jsp在項目xyz-hook中,我們在第1行發出警告

Fragment "/html/portal/init.jsp" was not found at expected path /xyz-hook/src/main/webapp/html/portal/init.jsp

和線路錯誤2

InitImportedClass cannot be resolved

有什麼辦法來告訴Eclipse走在了其他項目尋找init.jsp?

包含init.jsp的項目(Liferay portal trunk)已被引用。 我還創建了一個包含jsp的合成jar,並將其添加到本地maven存儲庫並作爲項目xyz-hook的依賴項。

PS:對於那些想知道的,這是替代jsps時Liferay掛鉤的一個典型設置,由門戶內核提供。 PPS:我知道我可以完全停用jsp驗證,但是這是我想避免的,因爲否則,真正缺少的導入也不會顯示爲錯誤。

回答

1

我非常歡迎這樣的功能,但根據我最後的談話,這將是真的很難解決,並需要在很多組件中進行重大更改。鑑於jsp編輯器已經有點脆弱了(有時它顯示的驗證錯誤不存在),我不認爲有人在不久的將來會攻擊它。但我會把這作爲一個原因再次嘮叨。 (您可能想在https://issues.liferay.com/browse/IDE發佈功能要求或找到現有和支持)

不過,也有一些解決方法:

隨着<liferay-util:include /> JSP標籤,你可以指定一個ServletContext,包括另一個JSP從你自己的鉤子。這將運行在指定的webapp的類加載器中,並且eclipse可以處理那個。在你的jsp-hook中,你仍然需要停用jsp驗證,但剩下的JSP只是執行包含業務的幾個字符,這很好。

您將獲得更多的工作來獲得所有的上下文等,但如果您正在做更重的工作,這可能是一個選項。您還可以使用鉤子中的自定義類 - 當您將新的jsp引入到門戶類加載器時,通常無法使用這些類。

例如:

在你的鉤子,從門戶重寫的JSP,例如在my-hook/custom-jsps/html/portlet/navigation/view.jsp

<%-- omitted taglib includes --%> 
    <liferay-util:include 
     page="/jsp/navigation/view.jsp" 
     servletContext="<%=this.getServletContext().getContext("/my-hook")%>" /> 

這將覆蓋Liferay的默認的JSP與自己的實現導航的portlet。但是,它顯然沒有做太多,但包括/jsp/navigation/view.jsp它將自己的鉤內找到(注意:/custom-jsps包含覆蓋門戶的JSP中 - 在/jsp文件將被鉤的範圍內提供服務:

my-hook/jsp/navigation/view.jsp

<%-- omitted taglib includes --%> 
    <ul> 
    <li>build</li><li>your</li><li>navigation</li> 
    </ul> 
    <!-- you also have access to classes introduced by your hook --> 
    <%=CustomClassInHook.doSomething() %>  

的缺點是,你必須「重複」,每個Liferay的JSP通常得到你自己的初始化 - 例如import語句,使themeDisplay提供等

另外要注意:以上是僞代碼,我是ju st在這裏鍵入它從一些(筆&紙)筆記,不跑它。所以它可能需要更多的工作,並有其他缺點或缺點。


另一種可能性是開發Liferay的源代碼,並在複雜的重寫的JSP - 完成時 - 攜帶它們越過到自己的鉤子。如果您需要重建Liferay(但是重建jsp更改?),您將獲得構建時間命中,但是您獲得所有IDE的奢侈品

+0

感謝您的快速回復 - 我將在週一評估這些建議,給予反饋。 –

+0

我閱讀並重讀了你的第一個建議,但我真的不明白 - 你想介紹一下你所描述的最簡單的例子嗎? –

+0

增加了僞代碼。如果它幾乎正確,但需要一些調整,請隨時糾正,以便稍後公開參考。 –

相關問題