XPages Dojo Data Grid and Custom REST Service
***注意:Mine是XPINC应用程序! 我设法使上述方法起作用,但我想将参数传递给Rest Service,以建立更好的返回集。
在上面的示例中,脚本如下所示:
<script>
var jsonStore = new dojo.store.JsonRest(
{target:"CURRENT_PAGE_NAME_HERE.xsp/gridData"}
);
var dataStore = dojo.data.ObjectStore({objectStore: jsonStore});
</script>
但是,我想做这样的事情:
<script>
var jsonStore = new dojo.store.JsonRest(
{target:"CURRENT_PAGE_NAME_HERE.xsp/gridData?OpenXpage¶1=Value1¶2=Value2"}
);
var dataStore = dojo.data.ObjectStore({objectStore: jsonStore});
</script>
我尝试了许多方法,但没有成功。
方法1-使用Request / View / SessionScope变量 在“ CURRENT_PAGE_NAME_HERE.xsp”上,添加了一个“ xp:this.beforePageLoad”事件以创建范围变量,以保存从URL的paramValues中获取的para1和para2。
我认为一个简单的requestScope可以存储它们,以便在调用“ CURRENT_PAGE_NAME_HERE.xsp / gridData”时可以将它们拾取。但是,在页面的“ onClientLoad”事件中调用了Rest服务,并且Scope变量目前似乎不可用。
方法2-内联Javascript 我还尝试了“ $ {javascript:viewScope.para1;}”将其传递给以下用户:
<script>
var jsonStore = new dojo.store.JsonRest(
{target:"CURRENT_PAGE_NAME_HERE.xsp/gridData?OpenXpage¶1=${javascript:viewScope.para1;}¶2=${javascript:viewScope.para2;}"}
);
var dataStore = dojo.data.ObjectStore({objectStore: jsonStore});
</script>
这行不通。
方法3-硬编码 我已经硬编码了这些值。
<script>
var jsonStore = new dojo.store.JsonRest(
{target:"CURRENT_PAGE_NAME_HERE.xsp/gridData?OpenXpage¶1=Apples¶2=Oringes"}
);
var dataStore = dojo.data.ObjectStore({objectStore: jsonStore});
</script>
这有效!但是,仅适用于苹果和橘子
我开始考虑使用环境变量来传递值,但这似乎更像是一种技巧,而不是解决方案。
任何帮助或指导都将适用。
答案 0 :(得分:0)
丹,
您可能需要检查几件事。
第一件事是,您需要使用#而不是$来避免 计算页面加载时的表达式
在某些情况下,您不能将SSJS注入CSJS中-如果在页面加载时对此进行了“评估”。您可能会遇到这个问题。 检查的方法是创建几个局部变量并分配 SSJS中的值。这样可以轻松在浏览器中进行调试。
我想您可以执行类似的操作(然后您可以在浏览器中设置一个断点,并查看值是否符合预期)。
<script>
var p1 = "#{javascript:viewScope.para1;}";
var p2 = "#{javascript:viewScope.para2;}";
var jsonStore = new dojo.store.JsonRest(
{target:"CURRENT_PAGE_NAME_HERE.xsp/gridData?OpenXpage¶1=" + p1 + "¶2=" + p2}
);
var dataStore = dojo.data.ObjectStore({objectStore: jsonStore});
</script>
如果这不起作用,那么我建议在页面的开头创建一个脚本块,为每个变量(或整个arg。字符串)使用一个简单的小“ getter”方法,然后在其中使用SSJS。
编码愉快!
/ John
答案 1 :(得分:0)
由于这是XPINC应用程序,所以我觉得仅使用环境变量是安全的。
在调用XPage的视图操作按钮上,我将Environment变量写到系统上。然后,当我在客户端中打开Xpage时,Rest Service被硬连线到:
var param1:String = session.getEnvironmentString("Param!");
我仍然认为这更像是一种破解,但是有了Notes,我已经习惯了。哈哈