1
votes

My app uses KendoUI Grids for user views, but Xpages with custom controls for form pages (at least for now).

The Xpage looks for a sessionScope variable to determine if it is a new doc (nothing in the scope Var) or and update (unid is in the 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>

This worked for a completely Xpage app. I just put a value in the sessionScope key and called the Xpage.

In the Kendo UI code I am using client-side javascript and I don't see a way to set the sessionScope.

I can control the URL, so I could switch gears and use that, however the data for my app is in a different DB than my code.

Any help would be greatly appreciated.

1

1 Answers

1
votes

The easiest way is indeed using the URL:
call the XPage with a parameter ?key=... and change your CSJS code line to

var unid = param.key;

In case you really need to set a sessionScope variable from client side
then add this empty computed text field

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

to your XPage and set the sessionScope variable in CSJS code with

XSP.partialRefreshGet("#{id:setSessionScope}", {params: {'key': 'your key'}})