Jsf 通过FacesContext进行部分渲染

Jsf 通过FacesContext进行部分渲染,jsf,Jsf,实际上,我得到了一个inputText和一些ajax请求,以便在出现keyup事件时呈现数据表 mypage.xhtml: <h:form id="form"> <h:inputText id="number_in" value="#{bean.number}" redisplay="false" > <f:ajax event="keyup" render=":form:dataTable" /> </h:inpu

实际上,我得到了一个inputText和一些ajax请求,以便在出现keyup事件时呈现数据表

mypage.xhtml:

 <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>

如何实现这一点?

您可以通过编程方式将渲染ID添加到


请注意,这只能包含绝对的客户端ID,不应以

作为前缀,您希望在什么时候这样做?例如,当调用托管bean操作或侦听器方法时?如果是这样的话,请显示负责此操作的组件和方法的代码,然后我们可以告诉您如何相应地修改它。我只是添加了更多代码,希望能够改进我的问题。非常感谢。dataTable是否会立即呈现?否,仅当对同一请求执行呈现响应阶段时。那只差一个阶段了。侦听器方法在调用应用程序阶段执行。为什么这是正确的答案?请添加一些解释。虽然此代码可能会回答此问题,但提供有关此代码为什么和/或如何回答此问题的其他上下文可提高其长期价值。
FacesContext.getCurrentInstance().getPartialViewContext().setRenderAll(true);
  @ManagedBean(name="bean")
  @SessionScoped
  public class Bean {
     ...
     public void onKeyUp(AjaxBehaviorEvent event) {
        //Here I want to render the dataTable
     }
     ...
  }
FacesContext.getCurrentInstance().getPartialViewContext().getRenderIds().add("form:dataTable");
FacesContext.getCurrentInstance().getPartialViewContext().setRenderAll(true);