在 Xpages 上使用 jsonRpcService 时出错

Getting an error when using jsonRpcService on Xpages

我正在尝试使用 jsonRpcService 在控制台上打印一个值。只是为了测试。 但是当我调用该方法时,我在浏览器控制台上收到此错误:

POST http://localhost/Teste.nsf/Teste.xsp/RpcService?$$viewid=!ei0pdt23xx! 400 (Bad Request)
Error: Unable to load /Teste.nsf/Teste.xsp/RpcService?$$viewid=!ei0pdt23xx! status:400(…)  
Unable to load /Teste.nsf/Teste.xsp/RpcService?$$viewid=!ei0pdt23xx! status:400  
Error: Unable to load /Teste.nsf/Teste.xsp/RpcService?$$viewid=!ei0pdt23xx! status:400(…)  
Error: Unable to load /Teste.nsf/Teste.xsp/RpcService?$$viewid=!ei0pdt23xx! status:400(…)

错误图片如下: http://i.stack.imgur.com/T5ekl.jpg

我已经搜索了很多解决此错误的方法,但一无所获。

这是我正在使用的代码:

<xe:jsonRpcService id="jsonRpcService1" serviceName="metodos"
    pathInfo="RpcService">
<xe:this.methods>
    <xe:remoteMethod name="teste" script="print('teste')"></xe:remoteMethod>
</xe:this.methods>
</xe:jsonRpcService>

这是我在控制台上用来调用函数的代码

metodos.teste()

有谁知道我做错了什么?

谢谢

您必须在脚本中 return 一个值,并且您的客户端必须等待使用 回调 函数的响应.

这是一个工作示例:

<?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">
    <xe:jsonRpcService
        id="jsonRpcService1"
        serviceName="metodos"
        pathInfo="RpcService">
        <xe:this.methods>
            <xe:remoteMethod
                name="teste"
                script="return 'teste'">
            </xe:remoteMethod>          
        </xe:this.methods>
    </xe:jsonRpcService>

    <xp:button
        value="Test"
        id="button1">
        <xp:eventHandler
            event="onclick"
            submit="false">
            <xp:this.script><![CDATA[
                var deferred = metodos.teste();
                deferred.addCallback(function(result) {
                    alert(result);
                });]]></xp:this.script>
        </xp:eventHandler>
    </xp:button>

</xp:view>

当您单击按钮 "Test" 时,会出现一个警告框,其中显示消息 "teste"。

您可以像原来的 print('teste') 一样在 return 'teste' 之前添加额外的代码。该脚本只需要 return 东西...