当前位置: 首页 > 知识库问答 >
问题:

Google App Engine-JSF-Facelets-Why not*。xhtml作为url模式?

宿淳
2023-03-14

我正在将现有的应用程序从Tomcat迁移到GAE。在本地测试时,xhtml页面作为静态页面加载。所有处理都被绕过,包括我的过滤器。但是,如果我引用了一个不存在的页面,我的安全过滤器会将请求转发给登录名。xhtml和JSF/facelet呈现良好。

知道为什么要处理xhtml页面吗?

其他集成:日食太阳神、gae 1.6.5、maven(日食/平方米)、moharra 2.0.9、richfaces 4.2.0、spring 3.1.1

网状物xml:

<?xml version="1.0" encoding="UTF-8"?>
<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">

    <!-- https://community.jboss.org/wiki/HowToUseRichFaces40WithGoogleAppEngine -->
   <context-param>
      <param-name>com.sun.faces.enableThreading</param-name>
      <param-value>false</param-value>
   </context-param>
     <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Production</param-value>
    </context-param>
    <context-param>
        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
        <param-value>client</param-value>
    </context-param>


 <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext.xml</param-value>
 </context-param>

<listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<listener>
  <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>


 <filter>
  <filter-name>SecurityFilter</filter-name>
  <filter-class>com.xyz.web.filter.SecurityFilter</filter-class>
 </filter>
 <filter-mapping>
  <filter-name>SecurityFilter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>

 <servlet>
  <servlet-name>Faces Servlet</servlet-name>
  <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
 </servlet>

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

    <servlet>
        <servlet-name>Resource Servlet</servlet-name>
        <servlet-class>org.richfaces.webapp.ResourceServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Resource Servlet</servlet-name>
        <url-pattern>/org.richfaces.resources/*</url-pattern>
    </servlet-mapping>

</web-app>

更新:如果我添加以下映射并引用带有. jsf扩展名的页面,它就可以工作。直接引用. xhtml,仍然加载源。引用. xhtml的. jsf扩展名是典型的配置吗?如果是,您如何配置应用程序,以便通过. xhtml访问时源不可用?

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

共有1个答案

洪经义
2023-03-14

如果我正确理解你的需求,你应该补充

<static-files>
    <exclude path="/**.xhtml" />
</static-files>

在appengine网站上。xml

如果跳过这一步,web浏览器将从“静态文件服务器”而不是JSF获得回复。

 类似资料:
  • 主要内容:模板标签,创建Facelets模板模板是提供实现用户界面的工具的工具。 模板化是一个有用的功能,允许您创建一个页面,作为应用程序中其他页面的基础。 通过使用模板,您可以重用代码,并避免重复类似的页面。模板化还有助于简化在具有大量页面的应用程序中维护标准外观和感觉。 下表包含用于创建模板的Facelets标签。 模板标签 标签 功能 它用于定义创建并添加到组件树的组件。 它用于定义可选地使用模板的页面组合,此标记之外的内容将被忽略。

  • 主要内容:映射Faces ServletFacelets视图是页面。 您可以通过向页面添加组件来创建网页或视图,将组件连接到后端的值和属性,并在组件上注册转换器,验证器或侦听器。 网页作为前端。 您的应用程序的第一页默认为。 网页(如,在中)的第一部分声明页面的内容类型,即XHTML: 一个完整的文件:index.xhtml 代码内容如下所示 - Facelets HTML标签以开头,用于在网页和核心标签上添加组件用于验证用户输入。 标

  • 问题内容: 可以定义从facelets中的其他模板继承的模板吗? 像这样 然后viewUsers.xhtml将被浏览器调用 问题答案: 是的,绝对有可能。

  • 问题内容: 如何使用Facelets在JSF(1.2)标记的.xhtml页面中激活Eclipse(3.5,WTP)内容辅助?它适用于.jsp文件,但不适用于xhtml。 我在Google上搜索了很多,并且在很多地方(包括MyFaces Wiki)都说过-“ Eclipse无法与xhtml和facelets一起使用” 由于这适用于.jsp文件,因此我认为可能存在一些激活该内容辅助的机制。 我开始研究

  • 主要内容:Facelets应用程序的生命周期Facelets是一种轻量级的页面声明语言,用于使用HTML样式构建JSF(JavaServer Faces)视图。 它包括以下功能: 它使用XHTML创建网页。 除了支持JavaServer Faces和JSTL标记库之外,它还支持Facelets标签库。 它支持表达语言(EL)。 它是使用组件和页面的模板。 优点 它通过模板和复合组件支持代码可重用性。 它通过定制提供组件和其他服务器端对象的功

  • 问题内容: 我正在使用将Spring用于DI / bean管理的超大型JSF / Facelets应用程序。我的应用程序具有模块化结构,我目前正在寻找使模块化标准化的方法。 我的目标是由许多模块(可能相互依赖)组成一个Web应用程序。每个模块可能包含以下内容: 类; 静态资源(图像,CSS,脚本); Facelet模板; 托管Bean-具有请求,会话和应用程序范围的Bean的Spring应用程序上