管理多个h:inputText的正确方法?

时间:2010-05-02 14:35:12

标签: java jsf

我有一个h:dataTable来显示我的商品信息(在我的情况下是客户支持请求),对于每一行,我想添加h:inputTexth:commandButton来添加对所需项目的评论。我对操作没有任何问题,但我的问题是在h:inputText上管理许多backbean及相关值的正确方法。

我不确定让所有h:inputText将值设置为相同的backbean属性是否正确。有什么建议?谢谢大家。

1 个答案:

答案 0 :(得分:2)

取决于表单的组成方式。

如果表格的每一行代表一个表格(即h:form h:inputTexth:commandButtonh: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)时,它总是最终为最后行的值。