1

我有一个带有 ExtLib REST 控件的自定义控件。我正在从其余控件创建 JSON。如果我硬编码 doGet 标记内的所有内容,它工作正常。

但是,当我尝试在 do get 中通过compositeData 访问自定义属性时,出现错误:

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

有没有办法使用复合来创建我的 JSON 对象?

我正在尝试创建这样的对象:

var object = {};
object.height = compositeData.height
return toJson(object)
4

2 回答 2

2

REST 控件应该被视为一个独立的组件,它不能直接访问它所在的页面,因为可以通过类似于database.nsf/page.xsp/RESTServiceName.

相反,您应该做的是使用包含要传递到控件的参数的 url 调用 REST 服务,database.nsf/page.xsp/RESTServiceName?height=20&width=50然后使用param.get("height")and在控件中引用它们param.get("width")

另一种选择可能是将参数放入范围变量并从那里读取它们。

于 2012-04-19T01:25:55.720 回答
0

当从 Rest 对象调用数据时,它不会在那一刻调用 XPage,因此不会加载组件树。您可以在计算时尝试使用 ${} 而不是 #{} 吗?

于 2012-04-19T01:22:36.023 回答