是否有jsf的onrerender事件?

时间:2013-02-26 11:38:54

标签: java jsf jsf-2

我有 a4j:outputPanel 。我通过点击页面中的其他位置重新表示我想要在重新呈现outputPanel时触发操作。

是否有事件发生?我尝试过但我已经搜索过但我无法做到我想要的。 我知道我可以使用oncomplete事件来解雇rerender操作但是这样 我不想做的事。

无论如何,你有什么想法吗?我不需要确切的解决方案,只是想法可以帮助我找到这样做的方法。

编辑:对不起,我想要解决的动作是js动作。

3 个答案:

答案 0 :(得分:1)

尝试放置

<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')");
}

答案 1 :(得分:0)

如果你确定该动作重新渲染组件,那么为什么不将它添加到动作本身。您还可以使用Daniel建议的方法并从Java方法添加JavaScript调用。 Icefaces附带一个JavaScript上下文类,我相信richfaces会有类似的东西。

答案 2 :(得分:0)

尝试onbeforedomupdate组件的<a4j:ajax/>

<a4j:outputPanel>
   <a4j:ajax onbeforedomupdate="yourJs();"/>
</a4j:outputPanel>