繁体   English   中英

如何从JSF Bean调用JavaScript函数?

[英]How would I call a JavaScript function from a JSF Bean?

我需要从Java代码中执行此操作,但是我尝试了以下操作,但被卡住了:

    UIOutput js = new UIOutput();
    js.setRendererType("javax.faces.resource.Script");
    js.getAttributes().put("library", "js");
    js.setValue("alert(123);");

    FacesContext context = FacesContext.getCurrentInstance();
    context.getViewRoot().addComponentResource(context, js, "body");

服务器日志中没有出现此错误,但是也没有看到警报。

任何想法?

编辑:我尝试了建议的解决方案,所谓的重复项,我也没有收到服务器错误,但是我也没有看到任何警报。

我假设您想从JSF ManagedBean而不是JSF组件执行此操作。

我不确定对此是否有“普通的” jsf解决方案(意味着不添加其他框架或创建和维护一些特定的Java代码)。

至少有2种解决方案(我曾使用过的解决方案):

我确信所有其他组件套件(RichFaces,IceFaces,OpenFaces等)也有类似的解决方案。

如果您想继续使用普通的JSF,我将继续使用OmniFaces。 通常,这是一个很好的补充,它会阻止您维护有关实现细节的知识。

编辑:我刚刚找到一个简单的jsf解决方案

请尝试以下方法:

JavaScriptRunner.runScript(FacesContext.getCurrentInstance(), "alert(hello)");

我不知道我的版本。 但是我尝试了以下方法,它可以在我的环境中工作

FacesContext.getCurrentInstance().getResponseWriter().write("<script>alter('hello');</script>");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM