我有一个a4j:outputPanel。我点击页面中的另一个位置重新绘制,我想在重新绘制outputPanel
时激发一个动作。
是否有一个onrerender事件或其他什么?我试过了,也找过了,但我做不到我想做的事。我知道我可以使用一个完整的事件来触发重新发布操作,但这是我不想做的事。
不管怎样,你有什么想法吗?我不需要确切的解决方案,只要有想法就能帮助我找到解决问题的方法。
编辑:很抱歉犯了这个错误,我想启动的操作是js操作。
尝试放置
<f:event listener="#{myBean.myAction}" type="preRenderComponent"></f:event>
在您的outputPanel
内部。。。
public void myAction(ComponentSystemEvent componentSystemEvent) {
//some code goes here...
}
如果你想从你的托管bean方法调用js代码,你可以使用Primefaces-RequestContext
public void myAction(ComponentSystemEvent componentSystemEvent) {
RequestContext requestContext = RequestContext.getCurrentInstance();
requestContext.execute("alert('wow')");
}
如果您确定操作重新发送组件,那么为什么不将其添加到操作本身中呢。您还可以使用Daniel建议的方法,并从您的Java方法中添加JavaScript调用。Icefaces附带了一个JavaScript上下文类,我相信richfaces也会有类似的东西。
尝试<a4j:ajax/>
组件的onbeforedomupdate
<a4j:outputPanel>
<a4j:ajax onbeforedomupdate="yourJs();"/>
</a4j:outputPanel>