我尝试制作简单的JSF示例并拥有多个文件管理器。我使用Maven,并存储在META-INF flolder faces-confid.xml ..
在输出中尝试执行时,请参阅:
Welcome to JSF. #{test.test}
但我认为一定是别的。
他们是:
Bean文件
import java.io.Serializable;
import javax.enterprise.context.RequestScoped;
import javax.inject.Named;
@Named("test")
@RequestScoped
public class TestBean implements Serializable{
private String test = "test";
public String getTest() {
return test;
}
public void setTest(String test) {
this.test = test;
}
}
XHTML文件:
<?xml version="1.0" encoding="UTF-8"?>
<!--
To change this template, choose Tools | Templates
and open the template in the editor.
-->
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title>Welcome</title>
</h:head>
<h:body>
<h3>Welcome to JSF. #{test.test}</h3>
</h:body>
</html>
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"
version="2.5">
<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>/faces/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>new.xhtml</welcome-file>
</welcome-file-list>
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
</web-app>
答案 0 :(得分:4)
如果JSF没有找到bean,你就不会看到#{test.test}
,而只是一个空字符串代替那个EL表达式。没有评估EL表达式有不同的原因:当前的HTTP请求根本没有调用FacesServlet
,因此它无法为您执行所有JSF工作。要调用它,您需要确保浏览器地址栏中显示的请求网址与FacesServlet
中定义的web.xml
的网址格式相匹配。
通过右键单击查看源查看webbrowser中的HTML源代码,可以找到另一个证据。你会注意到所有这些<h:xxx>
标签都没有被解析过。 FacesServlet
也是负责该工作的人。
想象一下,您的网络应用程序在http://example.com/context/
上运行,并且您有一个Facelet文件/page.xhtml
,然后根据FacesServlet
的网址格式存在以下方案:
*.jsf
,则需要http://example.com/context/page.jsf
*.faces
,则需要http://example.com/context/page.faces
/faces/*
,则需要http://example.com/context/faces/page.xhtml
另一种方法是将其映射到*.xhtml
的网址格式。这样您就不必担心虚拟URL。
答案 1 :(得分:0)
您需要在WEB-INF文件夹中存储faces-config.xml和web.xml。 xhtml文件应该在WebContent中。