2012-10-09 79 views
1

由於EL版本2.2,下面的值表達式被允許:JSF EL 2.2。參數綁定

<h:outputText value="#{entry.getRow(column)}" /> 

凡列將是另一個變量。最終,什麼似乎上的outputText工作這麼好,我想重新使用上的inputText:

<h:inputText value="#{entry.setRow(column)}" /> 

「setRow」的定義如下:

public void setRow(String columnName, String content) { 
    // ... 
} 

我的問題是:這是否工作?或者說,我知道這是行不通的,因爲我得到一個有關如何請求「setRow」方法不存在的錯誤。那麼,我在這裏試圖做的一般工作 - 如果是這樣,那怎麼辦呢?

感謝您的任何意見和問候 帕斯卡爾

回答

4

這的確不是一個「設置」操作的有效表達。值表達式必須是一個完整的bean屬性表達式,但是你有一個bean方法表達式。

您可以改爲使用Map來實現特定的功能要求。

private Map<String, String> columns = new HashMap<String, String>(); 

public Map<String, String> getColumns() { 
    return columns; 
} 

<h:inputText value="#{bean.columns[column]}" /> 

在表單提交,EL將使用Map#put()方法來設置的值(因此,所需要的地圖沒有setter),則這將通過迭代可在動作方法地圖條目。

+0

這實際上是這樣做的。我所要做的就是爲我的行類寫一個Map 適配器。謝了哥們! –

+0

不客氣。 – BalusC