我有一个带有ExtLib REST控件的自定义控件。我正在从其余控件创建JSON。如果我对doGet标签内的所有内容进行硬编码,它的工作正常。
但是当我尝试通过复合数据访问自定义属性时,我得到一个错误:
com.ibm.domino.services.ServiceException: Error while rendering service
Caused by: com.ibm.xsp.exception.EvaluationExceptionEx: Error while executing JavaScript action expression
at com.ibm.xsp.binding.javascript.JavaScriptMethodBinding.invoke(JavaScriptMethodBinding.java:126)
at com.ibm.xsp.extlib.component.rest.CustomService$ScriptServiceEngine.renderServiceGet(CustomService.java:311)
at com.ibm.xsp.extlib.component.rest.CustomService$ScriptServiceEngine.renderService(CustomService.java:262)
... 20 more
Caused by: com.ibm.jscript.InterpretException: Script interpreter error, line=11, col=14: [ReferenceError] 'compositeData' not found
有没有办法使用composite来创建我的JSON对象?
我正在尝试创建一个这样的对象:
var object = {};
object.height = compositeData.height
return toJson(object)
答案 0 :(得分:2)
REST控件应该被视为一个独立的组件,它无法直接访问它所在的页面,因为可以通过类似于database.nsf/page.xsp/RESTServiceName
的URL来调用REST服务。
您应该做的是使用包含要传递到控件的参数的网址(例如database.nsf/page.xsp/RESTServiceName?height=20&width=50
)调用您的REST服务,然后使用param.get("height")
和param.get("width")
在控件中引用它们
另一个选择可能是将参数放入范围变量并从那里读取它们。
答案 1 :(得分:0)
当从Rest对象调用数据时,它不会在那一刻调用XPage,因此不会加载组件树。在计算时,您可以尝试使用$ {}代替#{}