2011-06-19 16 views
1

我有一個導航規則像這樣在我的JSF 2應用程序:我的JSF頁面的圖片在哪裏?

<navigation-rule> 
    <from-view-id>*</from-view-id> 
    <navigation-case> 
     <from-action>#{myBean.goToMyHome1}</from-action> 
     <from-outcome>myHome1.xhtml</from-outcome> 
     <to-view-id>/myhome1/myHome1.xhtml</to-view-id> 
     <redirect/> 
    </navigation-case> 
</navigation-rule> 

當我把一個h:commandLinkmyHome2.xhtml目錄myhome2滿足這個規則中,頁面myHome1.xhtml將顯示但也有上沒有圖像頁。他們去哪裏? 應用的背後,是Springsecurity 3與此配置:

<sec:intercept-url pattern="/myhome1/**" access="hasAnyRole('ROLE1','ROLE2')" /> 

<sec:intercept-url pattern="/myhome2/**" access="hasRole('ROLE2')" /> 

回答

0

這個樣子,就好像您的圖片URL相對於當前的URL路徑。例如。

<img src="images/picture.png" /> 

當您

http://example.com/contextname/myHome1.xhtml

打開網頁然後將圖像URL將有效指向

http://example.com/contextname/images/picture.png

但是,當你通過

http://example.com/contextname/myhome/myHome1.xhtml

打開網頁然後將圖像URL將有效指向

http://example.com/contextname/myhome/images/picture.png

您需要修復它相應地。有幾種方法。使用相對域路徑

<img src="/contextname/images/picture.png" /> 

或預先準備的上下文名稱動態

<img src="#{request.contextPath}/images/picture.png" /> 

或者只是使用<h:graphicImage>這將做自動

<h:graphicImage value="/images/picture.png" />