Sha*_*ahe 3 string datatable jsf input
我有以下数据表:
<h:dataTable var="row" value="#{myBean.listOfStrings}">
<h:column>
<h:inputText value="#{row}" />
</h:column>
</h:dataTable>
Run Code Online (Sandbox Code Playgroud)
哪个与List<String>
:
private List<String> listOfStrings = new ArrayList<String>();
public List<String> getListOfStrings() {
return listOfStrings;
}
public void setListOfStrings(List<String> listOfStrings) {
this.listOfStrings = listOfStrings;
}
Run Code Online (Sandbox Code Playgroud)
当我在字段中输入一个值并保存表单时,它没有将值传递给列表中的字段,这是设置null
,我在这里做错了什么?
这个String
类是不可变的.它没有实例值的setter.getter在这个构造中基本上是Object#toString()
由EL隐式调用的方法,它巧合地返回字符串值本身.
您需要将更改的值设置为新的列表项.您可以通过列表中的括号表示法来执行此操作,从而传递列表索引:#{myBean.listOfStrings[index]}
.
所以,这应该做,利用UIData#getRowIndex()
列表索引:
<h:dataTable binding="#{table}" value="#{myBean.listOfStrings}" var="row">
<h:column>
<h:inputText value="#{myBean.listOfStrings[table.rowIndex]}" />
</h:column>
</h:dataTable>
Run Code Online (Sandbox Code Playgroud)
(注意:值的表达式binding
是as-is!不要将它绑定到bean属性)
归档时间: |
|
查看次数: |
6105 次 |
最近记录: |