【问题标题】:How to expose JSF (.xhtml) under a sub folder of WebContent如何在 WebContent 的子文件夹下公开 JSF (.xhtml)
【发布时间】:2013-06-04 14:44:14
【问题描述】:

我目前无法从浏览器 URL 公开我的 JSF 文件。我的项目结构是这样的:

<PROJECT_NAME>
--->WebContent
    --->index.xhtml
    --->subfolder1
        --->subjsf.xhtml
    --->subfolder2
        --->subjsf.xhtml
    --->subfolder3
        --->subjsf.xhtml

这是我的 web.xml:

<?xml version="1.0"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
 <display-name>PROJECT_NAME</display-name>
 <context-param>
  <param-name>org.richfaces.skin</param-name>
  <param-value>blueSky</param-value>
 </context-param>
 <servlet>
  <servlet-name>Faces Servlet</servlet-name>
  <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
 </servlet>

 <servlet-mapping>
  <servlet-name>Faces Servlet</servlet-name>
  <url-pattern>*.xhtml</url-pattern>
 </servlet-mapping>

 <servlet-mapping>
  <servlet-name>Faces Servlet</servlet-name>
  <url-pattern>/pages/*</url-pattern>
 </servlet-mapping>

 <welcome-file-list>
  <welcome-file>index.xhtml</welcome-file>
 </welcome-file-list>
</web-app>

我的面孔配置:

<?xml version="1.0" encoding="UTF-8"?>
<faces-config version="2.0" xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xi="http://www.w3.org/2001/XInclude"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
 <navigation-rule>
  <from-view-id>/index.xhtml</from-view-id>
  <navigation-case>
   <from-outcome>subfolder1</from-outcome>
   <to-view-id>/subfolder1/subjsf.xhtml</to-view-id>
   <redirect/>
  </navigation-case>
 </navigation-rule>
 <application>
  <resource-bundle>
   <base-name>resources</base-name>
   <var>msgs</var>
  </resource-bundle>
 </application>
</faces-config>

不使用重定向,它似乎工作正常。但是启用重定向会出现此错误:

com.sun.faces.context.FacesFileNotFoundException: /subjsf.xhtml Not Found in ExternalContext as a Resource

当你像这样直接访问 URL 时:&lt;hostname&gt;:&lt;port&gt;/PROJECT_NAME/subfolder1/subjsf.xhtml it also gave the same error above.

我想启用 URL 的重定向以刷新并显示当前页面名称。另外,有没有办法对子文件夹使用隐式导航?

非常感谢你们的帮助!提前谢谢你...

【问题讨论】:

    标签: java jsf-2 richfaces jboss7.x faces-config


    【解决方案1】:

    只要内容不在WEB-INF下,所有内容都应该是客户端可以直接访问的。

    以下是一些故障排除提示:

    • 您的 WAR 部署成功了吗?
    • 您是否使用正确的 URL 访问?
    • 您的 URL 中的上下文是否与部署匹配?
    • 您是否在 WEB-INF 之外正确地捆绑了 xhtml 内容?

    最后,您可以进入部署目录,将 WAR 复制到一个单独的文件夹,将其放气并检查其内容是否符合您的预期。

    【讨论】:

    • 嗨,克里斯!感谢您的输入...突然我发现了错误。我对 faces servlet 和触发我遇到的错误的实际子文件夹使用相同的 url 模式。现在工作正常。顺便说一句,感谢您指出客户端可以访问 WEB-INF 之外的任何内容
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-16
    • 2015-07-01
    • 1970-01-01
    相关资源
    最近更新 更多