3

JSFページがあり、単一の入力に対して、バッキングBeanでコードを実行せずに、バッキングBeanに複数の値を設定したい場合があります。

単一の値を設定できます:

 <h:selectOneRadio id="selectMembershipLevel" class="TODO_SELECT" 
value="#{joinBackingBean.map[joinBackingBean.map.primary_memberInfo_membershipType_code]}">
 <f:selectItem id="basic" itemLabel="#{overrideMsg.pbBasic}" itemValue="B" />
 <f:selectItem id="plus" itemLabel="#{overrideMsg.pbPlus}" itemValue="P" />
 <f:selectItem id="plusRV" itemLabel="#{overrideMsg.pbPlusRV}" itemValue="RV" />

しかし、一度に複数を設定したい場合は、JSFページでそれを行うことができますか?

#{joinBackingBean.map[joinBackingBean.map.primary_memberInfo_membershipType_code]}
#{joinBackingBean.map[joinBackingBean.map.primary_memberInfo_membershipType_desc]}//Bdesc
#{joinBackingBean.map[joinBackingBean.map.primary_memberInfo_membershipType_type]}//Btype
4

1 に答える 1

5

<h:inputHidden>最初の入力のイベント中に JavaScript を使用して他のプロパティをバインドし、changeこれらの非表示の入力の値を最初の入力の現在の値と同じ値に操作します。

キックオフの例を次に示します。

<h:form id="form">
    <h:selectOneRadio value="#{bean.input1}" onchange="document.getElementById('form:input2').value = document.getElementById('form:input3').value = this.value">
        <f:selectItem itemValue="one" />
        <f:selectItem itemValue="two" />
        <f:selectItem itemValue="three" />
    </h:selectOneRadio>
    <h:inputHidden id="input2" value="#{bean.input2}" />
    <h:inputHidden id="input3" value="#{bean.input3}" />
    ...
</h:form>

もちろん、自由に JS 関数にリファクタリングしたり、jQuery を投入したりしてください。クライアントで JS が無効になっている場合、これはすべて機能しないこと、およびエンドユーザーが JS コードを操作してパラメーターを要求できることに注意してください。値を等しくする必要がある場合は、サーバー側のソリューションの方が堅牢です。

于 2013-01-25T18:06:11.633 に答える