[英]AJAX JSF selectItems in selectOneMenu
我有一個selectOneMenu像這樣:
<h:selectOneMenu class="form-control" value="#{beanBacking.pickedLongy}" id="foo" >
<f:selectItems value="#{beanBacking.thisTakesAwhile}"/>
</selectOneMenu>
要在一個菜單中填充項目需要很長時間,而我的頁面在執行此操作時就掛在那里。
我努力了:
<h:selectOneMenu class="form-control" value="#{beanBacking.pickedLongy}" id="foo" >
<f:ajax execute="@form" render="@none" />
<f:selectItems value="#{beanBacking.thisTakesAwhile}"/>
</selectOneMenu>
而且也不起作用。 有什么辦法可以加載頁面上的所有內容以及要使用ajax加載的項目嗎?
我最終通過創建一個帶有@PostConstruct注釋的init()方法並在那里執行加載來預加載數據。 這樣,在創建bean時就可以加載數據,而不必等待頁面調用被加載。
private String longData;
public String getThisTakesAwhile(){
return someClass.getLongData();
}
private String longData;
public String getThisTakesAwhile(){
return longData;
}
@PostConstruct
private void init(){
longData = someClass.getLongData();
}
您可以推遲加載組件。 然后緩存該組件。
<p:outputPanel deferred="true">
<p:cache key="selectOneMenu">
<h:selectOneMenu class="form-control" value="#{beanBacking.pickedLongy}" id="foo" >
<f:selectItems value="#{beanBacking.thisTakesAwhile}"/>
</selectOneMenu>
</p:cache>
</p:outputPanel>
延遲加載將確保頁面已加載並處理了
<f:selectItems value="#{beanBacking.thisTakesAwhile}"/>
將繼續在后台運行,並在處理完成后呈現。
用於緩存您可以使用的組件
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.