0

からの値のリストがあります。値のリストから、いくつかの値を確認したい場合、対応するテキストボックスが下部に表示されます。それ以外の場合、テキストボックスは非表示になります。JavaScriptを使用してこのプロセスを実行しました。しかし、私の問題は、required=true 属性を使用して検証する必要があることです。しかし問題は、非表示のテキスト ボックスも検証されていることです。

リスト値の Primefaces ページ:

     <p:selectManyCheckbox onchange="checkValue();" value="#{volunteerBean.knowAbt}" layout="pageDirection" id="s" immediate="true" required="true" requiredMessage="Select how to konws about cv?" style="width:300px;height:170px;">
     <f:selectItems value="#{volunteerBean.hearLst}" var="he"  itemLabel="#{he}" itemValue="#{he}" />
     <p:ajax event="change" update="msg1111" />
     </p:selectManyCheckbox>

入力テキスト ボックスのコーディング:

    <p:inputText style="display:none;" id="searchEngine" value="#{volunteerBean.searchEngine}"><p:watermark for="searchEngine" value="Search Engine"/>

checkBox のリストをチェックして、inputText を非表示および表示するための JavaScript:

    function checkValue() {
    var chk = document.getElementById("volunteerForm:s:10");
             if (chk1.checked) {
            document.getElementById('volunteerForm:searchEngine').style.display='';
            }else {
    document.getElementById('volunteerForm:searchEngine').style.display='none';
            }
        }

私はprimefaces 3.0とjsf 2.0を使用しています。解決方法

4

1 に答える 1

2

HTML DOM ツリーのみを変更しており、JSF コンポーネント ツリーは変更していません。JSF は、HTML 要素がクライアント側で非表示になっていることをまったく認識していません。代わりに、属性によって JSF コンポーネントを表示/非表示にしrendered、そのクライアント ID を .xml ファイルに含める必要があります<p:ajax update>

<p:selectManyCheckbox ... value="#{volunteerBean.knowAbt}">
    <f:selectItems value="#{volunteerBean.hearLst}" />
    <p:ajax event="change" update="msg1111 searchEngine" />
</p:selectManyCheckbox>

<p:inputText id="searchEngine" ... rendered="#{volunteerBean.knowAbt.contains('valueOfItem10')}" />

valueOfItem10、JS でチェックインしようとしたときのように、インデックス 10 のアイテムの正確な値です。あなたが示唆しているように、それknowAbtは aであると仮定していることに注意してください(余分な を削除しました、およびそれらはすでにデフォルトであるため、上記の例から)。それ以外の場合は、代わりにバッキング Bean のヘルパー メソッドでジョブを実行する必要があります。List<String>hearLstvaritemLabelitemValue

于 2012-07-04T12:20:22.850 に答える