Java 未呈现JSF标记
我是JSF新手,但我的JSF标记没有在xhtml文件中呈现, 我尝试了所有可能的解决办法,但问题并没有解决 my web.xmlJava 未呈现JSF标记,java,jsf,facelets,Java,Jsf,Facelets,我是JSF新手,但我的JSF标记没有在xhtml文件中呈现, 我尝试了所有可能的解决办法,但问题并没有解决 my web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/x
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>JSFProject</display-name>
<welcome-file-list>
<welcome-file>JSFProject/index.html</welcome-file>
<welcome-file>JSFProject/index.htm</welcome-file>
<welcome-file>JSFProject/index.jsp</welcome-file>
<welcome-file>JSFProject/default.html</welcome-file>
<welcome-file>JSFProject/default.htm</welcome-file>
<welcome-file>JSFProject/default.jsp</welcome-file>
</welcome-file-list>
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</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>
</web-app>
JSF项目
JSFProject/index.html
JSFProject/index.htm
JSFProject/index.jsp
JSFProject/default.html
JSFProject/default.htm
JSFProject/default.jsp
javax.faces.PROJECT_阶段
发展
Facesservlet
javax.faces.webapp.FacesServlet
1.
Facesservlet
*.xhtml
myexample.xhtml
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Example</title>
</head>
<body>
<h:form>
Some random data: <h:inputText/><br/> <!-- Textfield ignored -->
Some other data: <h:inputText/><br/> <!-- Textfield ignored -->
</h:form>
</body>
</html>
例子
一些随机数据:
其他一些数据:
我花了3天时间来解决这个问题,欢迎提供任何帮助尝试:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Example</title>
</head>
<body>
<f:view>
<h:form>
Some random data: <h:inputText/><br/> <!-- Textfield ignored -->
Some other data: <h:inputText/><br/> <!-- Textfield ignored -->
</h:form>
</f:view>
</body>
</html>
例子
一些随机数据:
其他一些数据:
我已经包括了JSF
标签,JSF组件根本没有被解析的症状表明FacesServlet
没有运行。当请求URL与FacesServlet
中定义的web.xml
的URL模式不匹配时,就会发生这种情况。这意味着FacesServlet
的实际url模式
根本不是*.xhtml
。您是否正在查看和编辑您认为正确的web.xml
?正确的web.xml
是否与webapp一起部署到servletcontainer中?伙计,您还没有设置javax.faces.DEFAULT\u后缀
上下文参数。jsf
的默认值是jsp
,因此jsf
将搜索example.jsp
,而不是example.xhtml
。基本上,JSF
用javax.faces.DEFAULT\u后缀
替换请求的资源扩展
使用以下选项,它将起作用:
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xhtml</param-value>
</context-param>
javax.faces.DEFAULT_后缀
.xhtml
是否有将Facelets声明为视图处理程序的faces-config.xml
<?xml version="1.0"?>
<faces-config 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-facesconfig_1_2.xsd" version="1.2">
<application>
<view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
</application>
</faces-config>
com.sun.facelets.FaceletViewHandler
不要忘了javax.faces.DEFAULT_SUFFIX参数要设置为.xhtml,如上所述。我也遇到了同样的问题,我通过如下更新解决了这个问题:-
马丁已经在上面提到过。谢谢
web.xml
javax.faces.DEFAULT_后缀
.xhtml
javax.faces.application.CONFIG_文件
/WEB-INF/faces-config.xml
Facesservlet
javax.faces.webapp.FacesServlet
1.
Facesservlet
*.面孔
faces-config.xml
com.sun.facelets.FaceletViewHandler
在web inf/lib中添加以下内容:
jsf-api-2.0.9.jar
jsf-facelets-1.1.14.jar
jsf-impl-2.0.4-b09.jar
jstl-1.2.jar
如果没有jsf facelets*.jar,您将无法呈现jsf视图
并且,web.xml中应包含以下内容:
<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>/jsf/*</url-pattern>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
Facesservlet
javax.faces.webapp.FacesServlet
1.
Facesservlet
/jsf/*
*.xhtml
如果没有上述两种url模式,tomcat将无法正确映射.xhtml文件
以及faces-config.xml:
<?xml version="1.0" encoding="UTF-8"?>
<faces-config
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-facesconfig_2_0.xsd"
version="2.0">
</faces-config>
您试图访问的URL是什么?URL是:服务器是Jboss 5.1.0 GAsorry URL是呈现的内容吗?获取页面的HTML源代码。包括标记,然后查看发生了什么这没有帮助。他在使用facelet,其中f:view
不是必需的,而不是JSP。即使如此,如果他使用的是JSP,当JSF在解析过程中遇到一个没有父组件的组件时,如果缺少f:view
,就会导致JSF抛出一个IllegalStateException
。如果使用的是JSF 1.2而不是2.0,但当它通过FacesServlet
时会产生404,而不是在未分析的页面中。因此,这只能意味着它没有通过FacesServlet
@BalusC-Yes传递,但他没有告诉我们正在使用哪个版本的JSF。此外,他还没有澄清他所说的“渲染”是什么意思。也许他拿到了404,但他还没告诉我们。这就是我所想的。这并不重要,但是如果你将脸部配置的版本从原来的1.2更改为2,我敢打赌它只适用于JSFF 1。OP的问题症状和存在javax.faces.PROJECT_STAGE
param表明他使用的是JSF 2.x,其中FaceletViewHandler
和javax.faces.DEFAULT_后缀
是不必要的,您可以只在*.xhtml
上映射FacesServlet
,而不是*.faces
。在JSF1.x中,映射*.xhtml
上的FacesServlet
会导致无限前向循环。我相信毕竟他的faces config.xml
版本不正确。
<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>/jsf/*</url-pattern>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
<?xml version="1.0" encoding="UTF-8"?>
<faces-config
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-facesconfig_2_0.xsd"
version="2.0">
</faces-config>