2013-03-23 72 views
2

我有一個運行在Glassfish 3.1.2.2上的webapp,它使用JSF 2.1(Mojarra)和PrettyFaces 3.3.3來促進集成「漂亮」REST-樣式的URL與我的應用程序。使用PrettyFaces的JSF資源(CSS,JS,圖像)的漂亮網址

但是,看着生成的html代碼,我看到的應用程序資源相當「醜陋」的長路徑。像這樣:

<script type="text/javascript" src="/HelloWorld/faces/javax.faces.resource/js/jquery-1.9.1.min.js"> 

特別是faces/javax.faces.resource/部分傷了我的眼睛。遵循PrettyFaces的主要思想,我希望刪除這部分內容。

是否有可能攔截這些網址的生成,PrettyFaces可以幫助我嗎?

我使用<h:outputScript name="js/jquery-1.9.1.min.js" />,<h:outputStylesheet name="css/app.css" /><h:graphicImage name="img/logo.png" />將資源引用包含在我的JSF-Servlet中。

編輯:我想我必須做兩件事?

  • 一:將地圖/img/*這樣的請求映射到它們的實際位置/faces/javax.faces.resource/img/*
  • 二:鉤入<h:graphicImage />元素(及其他)的URL生成。

我會很高興,如果你能給我一些指示從哪裏開始。我對JSF相當陌生。

非常感謝! :)

+1

這個要求的動機是什麼? – 2013-03-23 13:23:12

+0

我知道你的意思@Luiggi。這更多的是「軟」的要求。我想讓我的網址漂亮,即使是指向資源的網址。我認爲'/ HelloWorld/img/logo.png'或'/ HelloWorld/resources/img/logo.png'看起來比'/ HelloWorld/faces/javax.faces.resource/img/logo.png'好。 – RamboNo5 2013-03-23 15:53:37

+2

您可能會發現這有幫助:http://stackoverflow.com/questions/14963756/prevent-suffix-from-being-added-to-resources-when-page-loads/ – BalusC 2013-03-23 18:12:30

回答

2

不幸的是,用PrettyFaces實現這樣的需求是非常困難的。這就是我們決定開始Rewrite的原因之一,這是PrettyFaces的繼任者。

重寫它很容易做到這一點。您只需添加一個Join規則,將您想要查看的路徑轉換爲您的應用程序當前使用的路徑。

你的要求可以通過這樣的事情來實現:

.addRule(Join.path("/js/{file}").to("/faces/javax.faces.resource/js/{file}")) 

簡單,不是嗎?如果你想了解更多關於Rewrite的內容,請看examples configurations。如果您有任何問題,請查看forums

重寫2.0.0.Final將很快發佈,帶來一些不錯的增強功能。特別是PrettyFaces的向後兼容模塊,如果您想用Rewrite替換PrettyFaces,它允許您重新使用當前的PrettyFaces配置。

+0

謝謝,我會深入研究Rewrite。這看起來很有趣! – RamboNo5 2013-03-24 13:17:33