私は次のJSFコードを持っています:
<p:selectOneRadio id="contactPersonGender" value="#{myBean.contactPersonGender}">
<f:selectItems value="#{data.getGenders()}" var="gender" itemValue="#{gender}" itemLabel="#{gender.label}" />
</p:selectOneRadio>
<p:commandButton onclick="copyFromContactToManager();" ajax="false" type="button" update="@form"/>
<p:selectOneRadio id="managerGender" value="#{myBean.managerGender}">
<f:selectItems value="#{data.getGenders()}" var="gender" itemValue="#{gender}" itemLabel="#{gender.label}" />
</p:selectOneRadio>
ボタンがクリックされたときに contactPersonGender から managerGender に選択をコピーしたいと思います。data.getGenders() は、列挙型「Gender」(MALE または FEMALE) の配列を返します。たとえば、contactPersonGender で FEMALE が選択されている場合、ボタンがクリックされたときに managerGender も FEMALE を選択する必要があります。
私は次のコードを試しました:
function copyFromContactToManager(){
$("input[id^='" + contactPersonGender + "']").each(function(index, element) {
if ($(element).prop("checked")) {
$("input[id^='managerGender:" + index + "']").first().click();
}
});
}
また:
function copyFromContactToManager(){
$("input[id^='" + contactPersonGender + "']").each(function(index, element) {
$("input[id^='managerGender:" + index + "']").prop("checked", $(element).prop("checked"));
}
}
どちらも機能しますが、私のボタンをクリックした後、UI は更新されません (たとえば、contactPersonGender で "MALE" が選択され、managerGender で "FEMALE" が選択されている場合、managerGender でボタンをクリックした後、"FEMALE" はまだ表示されます)。しかし、フォームをサーバーに送信してデータを保持すると、managerGender の期待値は "MALE" になります)。