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 で使用できるようにするかです。そして主に、リストが空で始まる場合、マネージド Bean に正しくポストバックできるように、この ID を生成するにはどうすればよいでしょうか。

4

1 に答える 1

1

この生成された ID を制御して、JavaScript で使用できるようにするにはどうすればよいですか

固定してidください。

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

jsfcまたは、 attribute を使用して に<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>

そして主に、リストが空で始まる場合、マネージド Bean に正しくポストバックできるように、この ID を生成するにはどうすればよいですか?

これには、JS の代わりに JSF を使用します。例はここにあります: JSF コンポーネントを動的に追加する方法

以下も参照してください。

于 2017-01-07T17:24:37.757 に答える