首页 > 解决方案 > 使用 h:message 警告创建输入表

问题描述

我正在尝试在 JSF 中创建一个包含多行输入的表。每行都是它自己的显示类,并具有显示数据所需的属性。但是,我需要在每个输入上都有验证器消息,并且我无法弄清楚如何获取输入的 id 以传递给“for=”属性中的消息。如果我使用静态 ID,它会引发整个列的错误。

我尝试使用函数或字符串连接动态创建 ID,但它会引发错误,即消息组件找不到要附加“for=”的组件。

我知道 dataTable 也是一种选择,但我也没有看到在那里获取 id 的方法。我是 JSF 的新手,所以我觉得我一定错过了一些简单的东西。我看到一篇关于抓取 NamedContainer ids 的帖子,但我不知道这是否适用于循环。

<table>
<tbody>
    <ui:repeat value="#{listOfItems}" var="item">
        <tr>
            <td>
                <h:outputLabel for="#{mainInputId}" <-!This id-->
                               value="label name"/>
                <h:message for=#{mainInputId} />
                <h:inputText id="#{mainInputId}"
                             validator="#{backingBean.validateInput}"
                             valueChangeListener="#{backingBean.inputChanged}"
                             value="#{item.inputValue}"
                             label="input label"
                             converterMessage="converter message">
                </h:inputText>
            </td>

            <td>
                <h:outputLabel for="#{secondInputId}"
                               value="label name"/>
                <h:message for=#{secondInputId} />
                <h:inputText id="#{secondInputId}"
                             validator="#{backingBean.validateInput}"
                             valueChangeListener="#{backingBean.inputChanged}"
                             value="#{item.secondInputValue}"
                             label="input label 2"
                             converterMessage="converter message">
                </h:inputText>
            </td>
        </tr>
    </ui:repeat>
</tbody>
<table>

标签: jsfjsf-2

解决方案


推荐阅读