gpt4 book ai didi

java - 使用 Extendedrenderkitservice 添加脚本

转载 作者:行者123 更新时间:2023-12-01 13:38:04 25 4
gpt4 key购买 nike

我在添加脚本时遇到问题。请找到我的代码如下

    FacesContext facesContext = FacesContext.getCurrentInstance();
ExtendedRenderKitService extendRenderKitService = Service.
getRenderKitService(facesContext, ExtendedRenderKitService.class);
try {
String methodCall = "afterPPRProcessing('" + journeyId + "',new Array (" + dynamicParams + "))";
System.out.println( "methodCall::" + methodCall);
extendRenderKitService.addScript(facesContext, methodCall);
} catch (Exception ex) {
System.out.println("exception while PPR processing ", ex);
}

我正在使用

  1. javax.faces.context.FacesContext;
  2. org.apache.myfaces.trinidad.render.ExtendedRenderKitService;
  3. org.apache.myfaces.trinidad.util.Service;

我实际上想根据(按钮单击等)等事件生成 Omniture afterPPRProcessing 是 javascript 中的一个方法。代码完美运行并且还将“methodCall”打印为

methodCall::afterPPRProcessing('abc',new Array ('xyz','pqr'))

我在执行页面时在“afterPPRProcessing”方法中设置了断点,但它并没有在断点处停止。

请帮助我了解未生成标记的可能原因。写代码的时候有没有什么错误。

提前致谢

最佳答案

为了使用 ExtendedRenderKitService 调用任何 javascript 函数,该函数调用必须存在于 PPR 响应中(点击请求的页面 URL 后生成的响应)。在分析过程中,我发现PPR Response中缺少omniture调用“afterPPRProcessing”,其原因是使用上述代码从Bean类添加脚本后,有一个刷新整个页面的代码。下面是代码

    FacesContext context = FacesContext.getCurrentInstance();
String viewId = context.getViewRoot().getViewId();
ViewHandler handler = context.getApplication().getViewHandler();
UIViewRoot root = handler.createView(context, viewId);
root.setViewId(viewId);
context.setViewRoot(root);

这段代码正在执行页面刷新,而该方法用于捕获PPR事件(On/Off)。因此,脚本不会添加到 ExtendedRenderKitService 中的 facesContext 中。

注释掉此代码后,PPR 调用工作正常,我能够生成矩阵。

感谢大家的帮助

希望这对其他人有帮助

关于java - 使用 Extendedrenderkitservice 添加脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21097371/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com