簡體   English   中英

selectOneMenu中的AJAX JSF selectItems

[英]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}"/>

將繼續在后台運行,並在處理完成后呈現。

用於緩存您可以使用的組件

  1. Primefaces緩存
  2. Omnifaces緩存

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM