2

对不起这个简单的问题。我正在学习使用 JSF 2.2 创建表单并尝试使其尽可能接近纯 HTML5。我有一个 ui:repeat 生成的列表,如下所示:

<ul id="nameLst">
    <ui:repeat var="d" value="#{controller.names}" varStatus="status">
        <li>
            <input
                jsf:id="nameTxt"
                jsf:binding="#{nameTxt}"
                jsf:value="#{d}"
                type="hidden" />#{d}
        </li>
    </ui:repeat>
</ul>

它被渲染成这样:

<ul id="nameLst">
    <li>
        <input id="j_idt14:0:nameTxt" name="j_idt14:0:nameTxt" value="Name1" type="hidden">
        Name1
    </li>
    <li>
        <input id="j_idt14:1:nameTxt" name="j_idt14:1:nameTxt" value="Name2" type="hidden">
        Name2
    </li>
</ul>

现在,我正在尝试将仅使用 JavaScript 的名称添加到此列表中。问题是,我怎样才能控制这个生成的 id,所以我可以在 JavaScript 中使用它。主要是,如果列表开始为空,我如何生成这个 id 以便它可以正确地发布回托管 bean。

4

1 回答 1

1

我怎样才能控制这个生成的 id,所以我可以在 JavaScript 中使用它

给它一个固定的id.

<ui:repeat id="names" ...>

或者,使用jsfc属性<ul>变成<ui:repeat>.

<ul id="names" jsfc="ui:repeat" value="#{bean.names}" var="name">
    <li>
        <input jsf:id="name" type="hidden" value="#{name}" />
    </li>
</ul>

主要是,如果列表开始为空,我如何生成这个 id 以便它可以正确地发布回托管 bean

为此使用 JSF 而不是 JS。可以在这里找到一个示例:如何动态添加 JSF 组件

也可以看看:

于 2017-01-07T17:24:37.757 回答