实际上我有一个inputText和一些ajax Request来在keyup事件出现时呈现数据表。
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
}
...
}
我怎样才能做到这一点?
答案 0 :(得分:12)
您可以通过编程方式将渲染ID添加到PartialViewContext#getRenderIds()
。
FacesContext.getCurrentInstance().getPartialViewContext().getRenderIds().add("form:dataTable");
请注意,这只能包含绝对客户端ID,不应以:
为前缀。
答案 1 :(得分:-2)
FacesContext.getCurrentInstance().getPartialViewContext().setRenderAll(true);