2012-05-04 74 views
0

我在JSF页面内部渲染#{}时遇到问题。JSF/Bean#{}未呈现/解析

我使用钻嘴鱼科2.1.5和JBoss 7

实施例:

JSF页

<h:inputText value="#{bean.name}"/>

faces-config.xml中

<managed-bean> 
    <managed-bean-name>bean</managed-bean-name> 
    <managed-bean-class>com.Bean</managed-bean-class> 
    <managed-bean-scope>session</managed-bean-scope> 
</managed-bean> 

HTML输出

#{bean.name}

问题

  1. 为什么我没有看到豆正确的价值观?
  2. 为什么我得到字符串而不是nothing

修订

web.xml内容:

<?xml version="1.0" encoding="ISO-8859-1"?> 

<!DOCTYPE web-app 
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
    "http://java.sun.com/dtd/web-app_2_3.dtd"> 
<!-- 
Automatically created by Apache Tomcat JspC. 
--> 
<web-app 
    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" 
    version="3.0"> 

    <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> 
    </servlet-mapping> 
</web-app> 

感谢

+0

在未来的JSF问题中,请务必提及JSF和servletcontainer的确切实现名称和版本号。例如,“Mojarra 2.1.7”和“Tomcat 7.0.27”。 – BalusC

回答

1

根据您的更新问题:

我用钻嘴鱼科2.1。 5和JBoss 7

按照您的意见:

在我的WEB-INF/lib目录下我只有:JSF-API 1.2_09,JSF的小面-1.1.14。罐子和JSF的实现了一套-1.2_09.jar ......并说实话,我不是很确定如果我需要所有的人......在web应用程序标签,我有2.5版

的JBoss 7已经附带了JSF 2.x实现。您不需要自己提供任何JSF库,当然不需要旧的spec版本,这只会冲突一切。 从您的web应用程序中删除那些jsf-*.jar文件。另外,自JSF 2.0以来,Facelets捆绑在JSF库中。 删除jsf-facelets-*.jar文件也是如此。

JBoss 7是一个兼容Servlet 3.0的容器。再次声明你的web.xml遵守的Servlet 3.0:

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

    <!-- Config here. --> 

</web-app> 

而且你还需要确保faces-config.xml符合JSF 2。0:

<?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"> 

    <!-- Config here. --> 

</faces-config> 

请确保您没有阅读针对JSF 1.x的教程。 JSF 2.x是一个主要的规范变化。确保您阅读的是JSF 2.x目标资源/书籍/教程。你可以在our JSF tag wiki page的底部找到有用的链接。

+0

感谢提示。 在我的WEB-INF/lib目录中,我只有:'jsf-api-1.2_09','jsf-facelets-1.1.14.jar'和'jsf-impl-1.2_09.jar' ...老实说,我不太确定,如果我需要他们所有人... 在'web-app'标签我有版本2.5。 – xyz

+0

我更新了答案。 – BalusC

+0

事实上,我不需要那些额外的罐子......但即使在我改变版本后,我仍然看到'#{}'而不是价值:( – xyz