3

実際、keyupイベントが表示されたときにデータテーブルをレンダリングするためのinputTextといくつかのajaxリクエストを受け取りました。

mypage.xhmtl:

 <h:form id="form">

    <h:inputText id="number_in" value="#{bean.number}" redisplay="false" >
         <f:ajax event="keyup" render=":form:dataTable" />
    </h:inputText>

    <h:dataTable id="dataTable" ...>
    ...
    </h:dataTable>

 <h:form>

jsfページからdataTableをレンダリングしたくありません。リスナーメソッドが呼び出されたときに、FacesContextによってMangedBeanでdataTableをレンダリングしたいと思います。

mypage.xhtml:

<h:form id="form">

    <h:inputText id="number_in" value="#{bean.number}" redisplay="false" >
         <f:ajax event="keyup" listener="#{bean.onKeyup}" />
    </h:inputText>

    <h:dataTable id="dataTable" ...>
    ...
    </h:dataTable>

mybean.java:

  @ManagedBean(name="bean")
  @SessionScoped
  public class Bean {
     ...
     public void onKeyUp(AjaxBehaviorEvent event) {
        //Here I want to render the dataTable
     }
     ...
  }

どうすればそれを達成できますか?

4

2 に答える 2

13

プログラムでレンダリングIDをに追加できますPartialViewContext#getRenderIds()

FacesContext.getCurrentInstance().getPartialViewContext().getRenderIds().add("form:dataTable");

これには絶対クライアントIDのみを含めることができ、プレフィックスとして。を付けないでください:

于 2012-06-21T13:10:41.037 に答える
-2
FacesContext.getCurrentInstance().getPartialViewContext().setRenderAll(true);
于 2015-09-08T20:34:20.730 に答える