Java 未呈现JSF标记

Java 未呈现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

我是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/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>