アイテムにリピートレンダーselectBooleanCheckboxがロードされた後に、リストを更新するremmoteCommandがあります。ただし、チェックボックスで値が正しく設定されていない場合は、選択されたプロパティ(ブール値)を持つ項目がtrueに設定されている項目があります。selectBooleanCheckboxがremoteCommandの後に設定されていません
リストがロードされた後にバッキングBeanにアイテムを設定しただけでは、そのアイテムに対してのみ機能します。何が問題なの?
いるindex.xhtml
<h:form>
<h:panelGroup id="itemsHolder">
<h:panelGrid rendered="#{backingBean.items != null}">
<h:selectBooleanCheckbox value="#{backingBean.item.selected}" disabled="#{backingBean.rendered}" /> #{backingBean.item.name}
<ui:repeat value="#{backingBean.items.toArray()}" var="option" >
<h:selectBooleanCheckbox value="#{option.selected}" disabled="#{backingBean.rendered}" />
#{option.name}
<br />
</ui:repeat>
</h:panelGrid>
</h:panelGroup>
<p:remoteCommand rendered="#{backingBean.rendered}"
name="initItems"
actionListener="#{backingBean.initItems()}"
process="@this"
update="itemsHolder"/>
</h:form>
<ui:fragment rendered="#{backingBean.rendered}">
<script>
$(document).ready(function() {
setTimeout(function() {
initItems();
}, 3000);
});
</script>
</ui:fragment>
BackingBean.java
@Component
@ManagedBean
@Scope("view")
public class BackingBean {
private boolean rendered = true;
private Set<Item> items;
private Item item;
public void initItems() {
items = new LinkedHashSet<>();
items.add(new Item("item 1", true, "1"));
items.add(new Item("item 2", false, "2"));
items.add(new Item("item 3", true, "3"));
item = new Item("lonely item", true, "4");
}
//Getters and setters
}
UPDATE:私はサンドボックス内の実際のコードのコピーを作成し 、私はまだ再現することはできませんよ、I私は実際のコードからより多くの依存関係を加えなければならないと思う。
リモートコマンドはどこにありますか?あなたの[mcve]はどこにありますか? – Kukeltje
最小限の検証可能な例を作成するために、コードを別のプロジェクトに追加しましたが、再現できませんでした。問題は、プロジェクトには非常に多くの依存関係とフレームワークがあり、しばらく時間がかかることです。今までの問題は私のローカル環境でのみ起こっています。私はあなたの時間のおかげで、仕事を終えたときに戻ってきます。 – Edu