Xpages 如何使用xe:jsonRpcService?
我正在尝试使用扩展库组件远程服务()。我从和那里得到了一些提示。基本上,我正在尝试使用RPC保存文档。问题是文档被保存,但它不保存XPage上的任何字段。下面是示例XPage代码:Xpages 如何使用xe:jsonRpcService?,xpages,xpages-extlib,Xpages,Xpages Extlib,我正在尝试使用扩展库组件远程服务()。我从和那里得到了一些提示。基本上,我正在尝试使用RPC保存文档。问题是文档被保存,但它不保存XPage上的任何字段。下面是示例XPage代码: <?xml version="1.0" encoding="UTF-8"?> <xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xe="http://www.ibm.com/xsp/coreex"> <xp:this.da
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xe="http://www.ibm.com/xsp/coreex">
<xp:this.data>
<xp:dominoDocument var="document1" formName="Test"></xp:dominoDocument>
</xp:this.data>
<xe:jsonRpcService id="jsonRpcService1" serviceName="service">
<xe:this.methods>
<xe:remoteMethod name="saveDoc">
<xe:this.script><![CDATA[print(">> " + getComponent("inputText1").getValue());
document1.save();
return true;]]></xe:this.script>
</xe:remoteMethod>
</xe:this.methods>
</xe:jsonRpcService>
<xp:br></xp:br>
<xp:inputText id="inputText1" defaultValue="testValue" value="#{document1.testField}"></xp:inputText>
<xp:br></xp:br>
<xp:button value="Save" id="button1">
<xp:eventHandler event="onclick" submit="false">
<xp:this.script><![CDATA[var deferred = service.saveDoc();
deferred.addCallback(
function(result) {
alert(result);
}
);]]></xp:this.script>
</xp:eventHandler>
</xp:button>
</xp:view>
我在这里所做的是,我创建了远程服务(Service
),在其中保存当前文档(document1
)。它保存文档,但不保存inputext1
中的值。另外,当我尝试打印inputext1
的值时,它会显示在控制台上,但不会保存
这样做对吗?或者我在这里遗漏了什么。另外,在某些情况下,使用xe:jsonRpcService
是合理的吗?避免使用JSON-RPC进行此类操作(至少)有两个原因:
- 通知新用户他们为新帐户选择的用户名是否已被使用。与其绑定一个标准的keyup事件来发布整个表单,不如只向服务发送一个字段的值,根据站点注册记录查询它,然后返回一个布尔值
- 对易于频繁更新的相关数据进行实时轮询。假设您正在开发一个CRM,并且希望显示您正在查看其帐户的公司的股票价格。使用setInterval定期向RPC询问更新后的股票价格,然后在价格发生变化时执行手动客户端DOM操作,同样允许您以最小的网络开销执行稍微复杂的操作
这并不意味着您不能将RPC用于写操作。。。但对于任何需要完整、最新上下文(即当前页面上每个字段的当前值)才能正确运行的操作,标准事件处理程序几乎总是更好的方法。感谢Tim的详细解释。