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

标签 java jsf

我有一个 h:dataTable 来显示我的项目信息(在我的例子中是客户支持请求),我想为每一行添加一个 h:inputTexth:commandButton 向所需项目添加注释。我对操作没有问题,但我的问题是关于在 backbean 上管理许多 h:inputText 和相关值的正确方法。

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

最佳答案

取决于表单的构成方式。

如果表格的每一行代表一种形式(即 h:formh:inputText 并且 h: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可能在这方面有用。但是这种方法没有我的推荐。而是将输入值(如有必要,还有操作)绑定(bind)到在 var 中声明的迭代行对象h:dataTable 的属性反而。 IE。 #{item.value}#{item.submit} .或者,采用下面描述的方法。

如果整个表格都放在一个表格中(即 h:dataTableh: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/

相关文章:

java - 是否有必要存储缓存线程池?

jsf - '52' 的转换错误设置值 'null Converter'

jsf - javax.faces.application.Application.getResourceHandler 处的 java.lang.UnsupportedOperationException

java - 访问其他 bean 或属性时 Jsf NullPointerException ManagedBean

java - 我无法安装generator-jhipster-uml来生成实体

java - 为什么我的 findViewById() 找不到我在 xml 代码中引入的 Id?

java - 捕获进程 ID 并终止它的最简单方法是什么?

java - 在java中提取ZIP

java - Jsf 2.0 自定义标签

jsf - 尝试在构造函数中访问 @Inject bean 时出现 NullPointerException