【问题标题】:How to execute javascript method from server side?如何从服务器端执行javascript方法?
【发布时间】:2013-07-17 22:31:10
【问题描述】:

在 primefaces 中有 RequestContext 类,它增加了从服务器端调用 javascript 方法的能力:

RequestContext context = RequestContext.getCurrentInstance();          
        //execute javascript oncomplete  
        context.execute("PrimeFaces.info('Hello from the Backing Bean');"); 

我想知道是否可以在不使用 primefaces 的情况下使用 jsf 2 来实现这一点,请告知。

【问题讨论】:

标签: jsf-2 primefaces


【解决方案1】:

最简单但也是最简单的方法是设置一个表示 <h:outputScript> 内容的属性,然后通过将其客户端 ID 添加到 PartialViewContext#getRenderIds() 来进行 ajax 更新。

所以,给定一个

<h:panelGroup id="script"><h:outputScript>#{bean.script}</h:outputScript></h:panelGroup>

您可以使用 ajax 更新它

script = "alert('peek-a-boo')";
FacesContext.getCurrentInstance().getPartialViewContext().getRenderIds().add("script");

【讨论】:

  • 如果将脚本代码移到客户端以便服务器端只有面板组的更新,它会正常工作吗?
  • 我不明白你在说什么。请详细说明具体的功能要求。您目前正在尝试解决什么问题,并且您认为这个问题的答案就是解决方案?
  • 我想完成与 primefaces requestcontext 中相同的行为。
  • 那么你必须自己创建一个自定义PartialViewContext。如果您碰巧使用/了解 OmniFaces,请查看 OmniPartialViewContext。它的作用基本相同,并允许Ajax.oncomplete("alert('peek-a-boo')") 执行脚本。有关示例和源代码的链接,另请参阅 showcase.omnifaces.org/contexts/OmniPartialViewContext
  • 任何想法如何调整上述代码以在 jsf 1 中使用?
猜你喜欢
  • 2014-11-24
  • 1970-01-01
  • 1970-01-01
  • 2011-08-23
  • 1970-01-01
  • 2014-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多