- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一些如下的Facelets文件。
网页内容
|-index.xhtml
|-register.xhtml
|-模板
| | --userForm.xhtml
| `--banner.xhtml
:
两个页面都使用/templates
目录中的模板。我的/index.xhtml
在浏览器中可以正常打开。我得到了生成的HTML输出。我在/index.xhtml
文件中有一个链接到/register.xhtml
文件。
但是,我的/register.xhtml
没有得到解析,而是以纯XHTML /原始XML而不是其生成的HTML输出形式返回。所有以#{...}
形式显示的EL表达式均按原样显示,而不是打印其结果。当我右键单击浏览器中的页面并执行“查看页面源代码”时,仍然可以看到原始的XHTML源代码,而不是生成的HTML输出。例如,<h:body>
没有成为<body>
。看起来模板没有被执行。
但是,当我在浏览器的地址栏中打开/register.xhtml
之类的/faces/register.xhtml
时,它会正确显示。这是怎么引起的,我该如何解决?
最佳答案
有三个主要原因。FacesServlet
不被调用。
XML名称空间URI丢失或错误。
已经加载了多个JSF实现。
1.确保URL匹配FacesServlet
映射
链接的URL(您在浏览器的地址栏中看到的URL)必须与<url-pattern>
的FacesServlet
匹配,如web.xml
所定义,以便运行所有JSF。 FacesServlet
是负责解析XHTML文件,收集提交的表单值,执行转换/验证,更新模型,调用动作以及生成HTML输出的程序。如果您不通过URL调用FacesServlet
,那么您将获得的所有内容(并通过右键单击在浏览器中查看源代码来查看)确实是原始的XHTML源代码。
如果<url-pattern>
例如是*.jsf
,则链接应指向/register.jsf
,而不是/register.xhtml
。如果像您一样,例如/faces/*
,则链接应指向/faces/register.xhtml
,而不是/register.xhtml
。避免这种混淆的一种方法是将<url-pattern>
从/faces/*
更改为*.xhtml
。因此,以下是理想的映射:
<servlet>
<servlet-name>facesServlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>facesServlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
<url-pattern>
更改为
*.xhtml
,那么您可能还希望阻止最终用户通过URL直接访问XHTML源代码文件。在这种情况下,您可以在
<security-constraint>
的
<url-pattern>
上添加一个
*.xhtml
,并在
<auth-constraint>
中添加一个空的
web.xml
,以防止出现以下情况:
<security-constraint>
<display-name>Restrict direct access to XHTML files</display-name>
<web-resource-collection>
<web-resource-name>XHTML files</web-resource-name>
<url-pattern>*.xhtml</url-pattern>
</web-resource-collection>
<auth-constraint />
</security-constraint>
FacesServlet
的URL模式下自动注册
*.xhtml
来解决上述所有问题。因此,替代方法是简单地升级到最新的JSF版本,该版本应为JSF 2.3或更高版本。但是理想情况下,您仍然应该仅在
FacesServlet
的一个URL模式上显式注册
*.xhtml
,因为对于完全相同的资源(例如
/register.xhtml
,
/register.jsf
,
/register.faces
和
/faces/register.xhtml
)拥有多个可能的URL对SEO不利。 。
xmlns.jcp.org
是自JSF 2.2以来的新功能,不适用于较旧的JSF版本。症状几乎与未调用
FacesServlet
相同。
<html lang="en"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
java.sun.com
XML名称空间:
<html lang="en"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets">
ConfigureListener
中有不必要的
web.xml
条目导致其被加载时两次。
<!-- You MUST remove this one from web.xml! -->
<!-- This is actually a workaround for buggy GlassFish3 and Jetty servers. -->
<!-- When leaving this in and you're targeting Tomcat, you'll run into trouble. -->
<listener>
<listener-class>com.sun.faces.config.ConfigureListener</listener-class>
</listener>
关于jsf - JSF返回带有纯/原始XHTML/XML/EL源的空白/未分析页面,而不是呈现的HTML输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3112946/
我想使用 li 和 ul 制作一个多级下拉列表,以便显示我博客中按年和月排序的所有文章。我希望我的下拉菜单看起来像 Google Blogspot 下拉菜单: 这是我的 CSS 和 HTML 代码 u
我在 Win 7 64 机器上将 CodeBlocks 与 gcc 4.7.2 和 gmp 5.0.5 结合使用。开始使用 gmpxx 后,我看到一个奇怪的段错误,它不会出现在 +、- 等运算符中,但
我正在使用 tern 为使用 CodeMirror 运行的窗口提供一些增强的智能感知,它工作正常,但我遇到了一个问题,我想添加一些自定义“types”,可以这么说,这样下拉列表中它们旁边就有图标了。我
我正在尝试让我的 PC 成为 Android 2.3.4 设备的 USB 主机,以便能够在不需要实际“附件”的情况下开发 API。为此,我需要将 PC 设置为 USB 主机和“设备”(在我的例子中是运
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 9
我在设置服务器方面几乎是个新手,但遇到了一个问题。我有一个 Ubuntu 16.04 VPS 并安装了 Apache2 和 Tomcat7。我正在为 SSL 使用 LetsEncrypt 和 Cert
我在一个基于谷歌地图的项目上工作了超过 6 个月。我使用的是 Google Maps API V1 及其开发人员 API key 。当我尝试发布应用程序时,我了解到 Google API V1 已被弃
我是 Python 的新手,所以如果我对一些简单的事情感到困惑,请原谅。 我有一个这样的对象: class myObject(object): def __init__(self):
这个问题已经有答案了: How can I access object properties containing special characters? (2 个回答) 已关闭 9 年前。 我正在尝
我有下面的 CSS。我想要的是一种流体/液体(因为缺乏正确的术语)css。我正在为移动设备开发,当我改变模式时 从纵向 View 到陆地 View ,我希望它流畅。现在的图像 在陆地 View 中效
我正在尝试使用可以接受参数的缓存属性装饰器。 我查看了这个实现:http://www.daniweb.com/software-development/python/code/217241/a-cac
这个问题在这里已经有了答案: Understanding slicing (36 个答案) 关闭 6 年前。 以a = [1,2,3,4,5]为例。根据我的直觉,我认为 a[::-1] 与 a[0:
mysqldump -t -u root -p mytestdb mytable --where=datetime LIKE '2014-09%' 这就是我正在做的事情,它会返回: mysqldum
我正在制作销售税计算器,除了总支付金额部分外,其他一切都正常。在我的程序中,我希望能够输入一个数字并获得该项目的税额我还希望能够获得支付的总金额,包括交易中的税金。到目前为止,我编写的代码完成了所有这
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许在 Stack Overflow 上提出有关通用计算硬件和软件的问题。您可以编辑问题,使其成为
我是否必须进行任何额外的设置才能让 apache-airflow 在任务失败时向我发送电子邮件。我的配置文件中有以下内容(与默认值保持不变): [email] email_backend = airf
这个问题在这里已经有了答案: What does the $ symbol do in VBA? (5 个回答) 3年前关闭。 使用返回字符串(如 Left)的内置函数有什么区别吗?或使用与 $ 相同
我有一个用VB6编写的应用程序,我需要使用一个用.NET编写的库。有什么方法可以在我的应用程序上使用该库吗? 谢谢 最佳答案 这取决于。您可以控制.NET库吗? 如果是这样,则可以修改您的库,以便可以
当我创建一个以 ^ 开头的类方法时,我尝试调用它,它给了我一个错误。 class C { method ^test () { "Hi" } } dd C.new.test; Too m
我已经使用 bower 安装了 angularjs 和 materialjs。 凉亭安装 Angular Material 并将“ngMaterial”注入(inject)我的应用程序,但出现此错误。
我是一名优秀的程序员,十分优秀!