错误[nucleusNamespace。]无效尝试解析范围全局中的组件''。它在范围原型中定义

时间:2013-08-31 16:56:05

标签: oracle atg atg-dynamo

当我尝试使用GenericService.resolveName(java.lang.String pName)时,我收到了上述错误 会话范围的similer错误也是如此。 如果我将范围更改为“全局”,则事情按预期工作。但我需要将我的组件放在原型范围内。那我能做些什么..?

2 个答案:

答案 0 :(得分:1)

请验证您的要求,以确保您确实必须使用原型范围。

由于我们不了解您的要求,我们无法验证您尝试实现的是否是一种良好做法,但我克服您的技术问题的2美分是从请求级别开始解决该组件。

如果您有权访问当前请求,请执行以下操作:

request.resolveName(componentName);

否则,请执行以下操作:

ServletUtil.getCurrentRequest().resolveName(componentName);

resolveName是一个计算成本很高的操作,因此只应在没有任何其他选项时使用它(例如在请求servlet管道中,以引用请求或会话组件),但如果必须,它会解决你的问题。

答案 1 :(得分:0)

您可能无法从更高范围的对象中解析较低范围的组件。

如果从全局范围组件调用resolveComponent,则可能无法解析它。

组件的属性应始终指向范围等于或大于其自身的对象。因此,全局范围组件属性应仅指向也具有全局范围的对象;会话范围组件属性应仅指向具有全局或会话范围的对象;而请求范围组件属性可以指向任何范围的对象,包括请求。

请阅读下面的ATG文档

http://docs.oracle.com/cd/E35318_02/Platform.10-1-1/ATGPlatformProgGuide/html/s0205componentscopes01.html