1

从 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

1 回答 1

4

这确实不是“设置”操作的有效表达式。值表达式必须是一个完整的 bean 属性表达式,但你有一个 bean 方法表达式。

您可以使用 a 来实现特定的功能要求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()方法来设置值(因此,地图不需要设置器),然后通过遍历地图条目在操作方法中可用。

于 2012-10-09T14:28:40.073 回答