2012-04-03 33 views
2

我試圖創建一個「Hello World」JSF應用程序。 我有一個字段(字符串)的bean。JSF將EL表達式顯示爲純文本而不是評估值

@ManagedBean (name = "beanTest") 
@SessionScoped 
public class BeanTest 
{ 
    private String myString = "myString"; 
    public String getMyString() 
    { 
     return myString; 
    } 
    public void setMyString(String myString) 
    { 
     this.myString = myString; 
    } 
} 

當我想在我的JSP頁面

<h:outputLabel value="#{beanTest.myString}"/> 

來顯示字符串值在網頁中顯示它"#{beanTest.myString}",而不是"myString"

這是怎麼造成的,我該怎麼解決它?

回答

2

如果您web.xml聲明可能發生符合的Servlet 2.4或以上,或者如果你的文件夾/WEB-INF/lib是堆滿了像el-api.jar等舊版本的servletcontainer專用庫。

確保web.xml根聲明至少符合Servlet 2.5或最好是容器支持的最高Servlet API版本,並且/WEB-INF/lib文件夾不包含任何servlet容器特定的庫。

+0

所以這是因爲該應用程序不知道如何處理EL表達式? – 2012-04-03 14:04:52

+0

@Zack:沒錯。 Servlet 2.4和2.5中的EL API已經發生了變化。有關歷史,請參閱http://stackoverflow.com/questions/4812755/difference-between-jsp-el-jsf-el-and-unified-el。 OP的問題表明他基本上使用了不兼容的EL API,因此所有表達式都不會(不能)被解析。 – BalusC 2012-04-03 14:06:09

+0

你說得對。我將我的web.xml從2.4更改爲2.5,現在一切都像魅力一樣。我如何使用2.4版本? – danieln 2012-04-04 06:37:12

0

使用h:outputtext用於此目的

+0

雖然h:outputLabel確實是錯誤的標籤,但它在具體問題上並沒有任何區別。 – BalusC 2012-04-03 12:28:05

+0

@BalusC,你是真的。我應該刪除這個答案。 – 2012-04-03 12:29:59