1

我的应用程序将 KendoUI Grids 用于用户视图,但 Xpages 带有用于表单页面的自定义控件(至少现在是这样)。

Xpage 查找 sessionScope 变量以确定它是新文档(范围 Var 中没有任何内容)还是更新(unid 在 var 中)。

<xp:this.data>
        <xe:objectData
            saveObject="#{javascript:PCModel.save()}"
            var="PCModel">
            <xe:this.createObject><![CDATA[#{javascript:var pc = new com.scoular.model.PC();
var unid = sessionScope.get("key");

if (unid != null) {
    pc.loadByUnid(unid);
    sessionScope.put("key","");
    viewScope.put("readOnly","Yes");
} else {
    pc.create();
    viewScope.put("readOnly","No");
}
viewScope.status = pc.status;
return pc;}]]></xe:this.createObject>
        </xe:objectData>
    </xp:this.data>

这适用于完全 Xpage 应用程序。我只是在 sessionScope 键中放了一个值并调用了 Xpage。

在 Kendo UI 代码中,我使用的是客户端 javascript,但看不到设置 sessionScope 的方法。

我可以控制 URL,因此我可以切换齿轮并使用它,但是我的应用程序的数据与我的代码位于不同的数据库中。

任何帮助将不胜感激。

4

1 回答 1

1

最简单的方法确实是使用 URL:
使用参数调用 XPage?key=...并将您的 CSJS 代码行更改为

var unid = param.key;

如果您确实需要从客户端设置 sessionScope 变量,
则添加这个空的计算文本字段

<xp:text
    escape="true"
    id="setSessionScope"
    value="#{javascript: if (param.key) {sessionScope.key = param.key} ''}" />

到您的 XPage 并在 CSJS 代码中设置 sessionScope 变量

XSP.partialRefreshGet("#{id:setSessionScope}", {params: {'key': 'your key'}})
于 2016-10-06T18:26:56.810 回答