我在添加脚本时遇到问题。请找到我的代码如下
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);
}
我正在使用
我实际上想要根据事件生成Omniture(按钮点击等) afterPPRProcessing是javascript中的一个方法。代码完美运行并打印" methodCall"如
methodCall::afterPPRProcessing('abc',new Array ('xyz','pqr'))
我已经在'PPRProcessing'之后设置了断点。执行页面时的方法,但它不会在断点处停止。
请帮助我了解标记未生成的原因。编写代码时是否有任何错误。
提前致谢
答案 0 :(得分:1)
为了使用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事件(开/关)。因此,脚本不会被添加到ExtendedRenderKitService中的facesContext。
在评论出这段代码之后,PPR调用工作正常,我能够生成矩阵。
感谢有关人士的帮助
希望这可能有助于其他人
答案 1 :(得分:0)
此代码可能无法正常工作的原因有几个:
通过触发Chrome开发者控制台确保您的javascript功能存在,并在浏览器中尝试使用此语法,看看是否一切正常。