Jsf 通过FacesContext进行部分渲染
实际上,我得到了一个inputText和一些ajax请求,以便在出现keyup事件时呈现数据表 mypage.xhtml: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
<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);