我有一个h:dataTable
来显示我的商品信息(在我的情况下是客户支持请求),对于每一行,我想添加h:inputText
和h:commandButton
来添加对所需项目的评论。我对操作没有任何问题,但我的问题是在h:inputText
上管理许多backbean
及相关值的正确方法。
我不确定让所有h:inputText
将值设置为相同的backbean
属性是否正确。有什么建议?谢谢大家。
答案 0 :(得分:2)
取决于表单的组成方式。
如果表格的每一行代表一个表格(即h:form
h:inputText
而h:commandButton
在h:column
内),那么技术上没问题。
<h:dataTable value="#{bean.list}" var="item">
<h:column>
<h:form>
<h:inputText value="#{bean.value}" />
<h:commandButton value="Submit" action="#{bean.submit}" />
</h:form>
</h:column>
</h:dataTable>
问题只是你需要确定输入与哪一行相关。 f:setPropertyActionListener
可能对此有用。但这种方法不是我的建议。而是将输入值(以及必要时还有操作)绑定到var
的{{1}}属性中声明的迭代行对象。即h:dataTable
和#{item.value}
。或者,采用下面描述的方法。
如果整个表格放在一个表格内(即#{item.submit}
在h:dataTable
内),那么您最好设置h:form
的{{1}}属性}作为value
的{{1}}属性中声明的迭代行对象的属性。
h:inputText
当您将其设置为辅助bean属性(即var
)时,它总是最终为最后行的值。