2012-12-12 80 views
1

據我所知,不應該根據JEE6 tutorial工作。

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

和管理的Bean

@ManagedBean 
public class Bean { 

    private String name; 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 
} 

但它完美地工作,我可以讀取響應頁面的「名稱」屬性。我認爲它只適用於延遲評估#{expr}的可寫屬性。

+0

你完全混合了「閱讀」和「寫作」。添加一個提交按鈕並按下它。 '$ {}'是否更新(寫入)模型值?這是你的答案。 – BalusC

回答

1

按照JEE6教程:

  • 右值表達式可以讀取數據,但不能寫。
  • 被立即執行所有表達式使用$ {}分隔符,總是右值表達式

所以這可能會導致你認爲你不能在一個可寫屬性使用${},但如果你後來讀:

當值表達式可用於:

    :使用 $ {}分隔符值表達式中可以使用
  • 靜態文本
  • 任何標準或自定義標記屬性可以接受一個表達式

所以,如果我沒有記錯,這並不矛盾前者。這僅表示當您使用<h:inputText value="${bean.name}"/>時,它將用於讀取name屬性,但如果您修改inputText中的內容,它將不會編寫

相關問題