我有一个 h:dataTable
来显示我的项目信息(在我的例子中是客户支持请求),我想为每一行添加一个 h:inputText
和 h:commandButton
向所需项目添加注释。我对操作没有问题,但我的问题是关于在 backbean
上管理许多 h:inputText
和相关值的正确方法。
我不确定让所有 h:inputText
将值设置为相同的 backbean
属性是否正确。有什么建议么?谢谢大家。
最佳答案
取决于表单的构成方式。
如果表格的每一行代表一种形式(即 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
可能在这方面有用。但是这种方法没有我的推荐。而是将输入值(如有必要,还有操作)绑定(bind)到在 var
中声明的迭代行对象h:dataTable
的属性反而。 IE。 #{item.value}
和 #{item.submit}
.或者,采用下面描述的方法。
如果整个表格都放在一个表格中(即 h:dataTable
在 h:form
中),那么您最好设置 value
h:inputText
的属性作为在 var
中声明的迭代行对象的属性h:dataTable
的属性.
<h:form>
<h:dataTable value="#{bean.list}" var="item">
<h:column><h:inputText value="#{item.value}" /></h:column>
</h:dataTable>
<h:commandButton value="Submit" action="#{bean.submit}" />
</h:form>
当您将其设置为辅助 bean 属性时,即 #{bean.value}
,它最终总是最后行的值。
关于java - 管理多个 h :inputText? 的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2753775/