2012-04-27 100 views
3

我的問題是,當我運行一個非常簡單的JSF應用程序時,EL標籤沒有得到渲染。EL標籤沒有呈現

例如,下面的代碼:

<html lang="en" xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html"> 
<h:head> 
    <title>Facelets Hello World</title> 
</h:head> 
<h:body> #{hello.world} </h:body> 
</html> 

顯示爲#{hello.word}在瀏覽器中,而不是 「世界,你好!」如應該由我管理的bean返回:

@ManagedBean(name = "hello") 
public class Hello { 
    public String getWorld() { 
     return "Hello World!"; 
    } 
} 

我已經看到了這個問題JSF 2.0 EL tags don't render in browser了,但它並沒有幫助我。而且,根據我讀到的內容,Tomcat 7聲稱提供了API和EL 2.2標準的實現。

我使用以下軟件/版本:

  • Eclipse的靛藍3.7.2的Java EE版
  • Eclipse插件:M2E 1.0.2
  • Eclipse插件:M2E-WTP 0.15.2
  • Maven 2的
  • 的Tomcat 7(曾嘗試以下的版本)
    • 的Tomcat 7.0 0.10
    • 的Tomcat 7.0.26
    • 的Tomcat 7.0.27
  • MyFaces的2.1.6
  • 的Oracle JDK 1.7.0

如果需要更多信息,我會很樂意提供它。

[EDIT1]

我甚至不知道這是必要的/是正確的,但增加了以下內容web.xml沒有解決的問題:

<context-param> 
    <param-name>org.apache.myfaces.EXPRESSION_FACTORY</param-name> 
    <param-value>org.apache.el.ExpressionFactoryImpl</param-value> 
</context-param> 

[EDIT2]

的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_3_0.xsd" 
    version="3.0"> 
    <display-name>jsf-facelets</display-name> 
    <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>*.html</url-pattern> 
    </servlet-mapping> 
    <context-param> 
     <param-name>javax.faces.DEFAULT_SUFFIX</param-name> 
     <param-value>.xhtml</param-value> 
    </context-param> 
    <context-param> 
     <param-name>org.apache.myfaces.EXPRESSION_FACTORY</param-name> 
     <param-value>org.apache.el.ExpressionFactoryImpl</param-value> 
    </context-param> 
    <context-param> 
     <param-name>javax.faces.STATE_SAVING_METHOD</param-name> 
     <param-value>client</param-value> 
    </context-param> 
    <context-param> 
     <param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name> 
     <param-value>true</param-value> 
    </context-param> 
    <context-param> 
     <param-name>org.apache.myfaces.NUMBER_OF_VIEWS_IN_SESSION</param-name> 
     <param-value>20</param-value> 
    </context-param> 
    <context-param> 
     <param-name>org.apache.myfaces.SERIALIZE_STATE_IN_SESSION</param-name> 
     <param-value>true</param-value> 
    </context-param> 
    <context-param> 
     <param-name>org.apache.myfaces.COMPRESS_STATE_IN_SESSION</param-name> 
     <param-value>true</param-value> 
    </context-param> 
    <context-param> 
     <param-name>org.apache.myfaces.COMPRESS_STATE_IN_CLIENT</param-name> 
     <param-value>true</param-value> 
    </context-param> 
    <context-param> 
     <param-name>org.apache.myfaces.ALLOW_JAVASCRIPT</param-name> 
     <param-value>true</param-value> 
    </context-param> 
    <context-param> 
     <param-name>org.apache.myfaces.PRETTY_HTML</param-name> 
     <param-value>true</param-value> 
    </context-param> 
    <context-param> 
     <param-name>org.apache.myfaces.DETECT_JAVASCRIPT</param-name> 
     <param-value>false</param-value> 
    </context-param> 
    <context-param> 
     <param-name>org.apache.myfaces.AUTO_SCROLL</param-name> 
     <param-value>true</param-value> 
    </context-param> 
    <context-param> 
     <param-name>org.apache.myfaces.SECRET</param-name> 
     <param-value>NzY1NDMyMTA=</param-value> 
    </context-param> 
    <listener> 
     <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class> 
    </listener> 
    <session-config> 
     <session-timeout>30</session-timeout> 
    </session-config> 
</web-app> 
+0

我想您嘗試訪問你的頁面作爲的mypage.html的?對?嘗試檢查它是否適合你mypage.jsf,並更改面臨的Servlet *。html的到\t \t \t < servlet-name> Faces Servlet \t \t *。JSF \t也如果JSF2項目可以刪除<的context-param> ​​javax.faces.DEFAULT_SUFFIX .xhtml Daniel 2012-04-29 10:11:49

+0

我只是嘗試以mypage.html而不是mypage.xhtml的身份訪問它,它的工作原理是 – 2012-04-29 10:15:02

+0

奇怪的是,我確信我在很多次之前嘗試了這個,但是......誰知道。現在它工作...謝謝你的提示,嘗試更改擴展 – 2012-04-29 10:16:22

回答

1

你應該.html等擴展訪問你的頁面:myPage.html

原因你的servlet映射

<servlet-mapping> 
    <servlet-name>Faces Servlet</servlet-name> 
    <url-pattern>*.html</url-pattern> 
</servlet-mapping> 
+0

如何將URL模式設置爲「/faces/*.html」(< - 這不起作用)?即前綴爲「/ faces /」路徑的所有內容都有.html擴展名 – 2012-04-29 11:32:21

+0

,您知道面孔不是物理文件夾嗎?你不需要把你的文件放在faces文件夾中,對吧?如果你設置了/faces/*。html,你不能像這樣打開頁面/faces/mypage.html? – Daniel 2012-04-29 11:48:10

+0

我意識到這不是一個文件夾,但我想要將一個路徑(例如/faces/*.html)映射到JSF,而另一個路徑(例如/ rest/*)映射到所有REST調用。我如何告訴JSF:(1)只查看.html文件[AND](2)只查看前綴爲/ faces /的URL? – 2012-04-29 11:59:34