我的JSF页面的图片在哪里?

时间:2011-06-19 10:25:42

标签: jsf-2 navigation spring-security

我的JSF 2应用程序中有这样的导航规则:

<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')" />

1 个答案:

答案 0 :(得分:0)

这看起来好像您的图片网址与当前网址路径相关。 E.g。

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

当您通过

打开页面时
  

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

然后图片网址将有效指向

  

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

但是当您通过

打开页面时
  

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

然后图片网址将有效指向

  

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" />