JSF comandButton执行动作,然后js函数以bean值作为参数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSF comandButton执行动作,然后js函数以bean值作为参数相关的知识,希望对你有一定的参考价值。

我从JSF开始,所以它看起来非常基本。我有一个命令按钮,需要调用一个方法来计算bean值,我希望新值作为参数传递给JS函数。我的第一次尝试是(我需要在我的js函数中使用新的信息值):

    <h:commandButton  id="searchbtn" value="refresh" 
                     action="#{controller.computeBean}"
                     onclick="renderGraph('#{screenBean.info}');" >
        <f:ajax execute="@this" render="@this"   />
    </h:commandButton>

控制器成功调用。刷新按钮以更新参数。但onClick操作发生在控制器操作之前,因此bean尚未呈现。所以我不得不在按钮上单击两次以获得所需的输出。所以我使用了来自primeface的oncomplete

    <p:commandButton  value="#refreshPF" 
                     action="#{controller.computeBean}"
                     oncomplete="renderGraph('#{screenBean.info}');"
                     update="@this">

    </p:commandButton>

但是现在在js函数中传递的bean不会使用新值更新。我知道该动作被调用,因为我在执行控制器方法结束时打印了bean值。我不确定我做错了什么,但我猜它来自更新。我有人提示可能会有所帮助我会非常感激。

使用的库:jsf 2.2.13和primeface 6.1

答案

您可以从Java调用JS代码,这在呈现响应时执行。查看:https://www.primefaces.org/showcase/ui/misc/requestContext.xhtml

在Action方法Java中,您可以编码:

PrimeFaces.current().executeScript("alert('This onload script is added from backing bean.')");

以上是关于JSF comandButton执行动作,然后js函数以bean值作为参数的主要内容,如果未能解决你的问题,请参考以下文章

JSF f:ajax 监听器 vs commandButton 动作

如何使用 html 5 按钮执行 jsf 操作

JSF2:动作和动作监听器

JSF + JS -> 只有在一切都成功时才执行重定向(条纹)

JSF 中的最佳实践:模型、动作、getter、导航、阶段监听器

JSF 页面元素无法从具有动作属性的支持 bean 触发方法。(JSF2.0 + primefaces)