2012-05-04 69 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