【问题标题】:Java method never called while using JSON RPC in Struts2在 Struts2 中使用 JSON RPC 时从未调用过 Java 方法
【发布时间】:2010-09-18 03:46:28
【问题描述】:

我正在尝试让以前的开发人员编写的一些代码正常工作。 是的,他现在离开了公司。 :-(

我有一个从 JS 代码进行的 JSON RPC 调用。 JS 运行良好,回调方法返回一个对象(不是错误对象)。

但是 Java 类上的方法永远不会被命中。 smd 方法确实会受到影响。


public String smd()
{
   return SUCCESS; // break point reaches here
}

@SMDMethod
public void updateRowValueForField(String key, String value, String fieldname)
{
   // We never get into this method.
}

<package name="EntryBarRPC" namespace="/" extends="star-default">

    <action name="ebToggleSelection" class="eboggleSelectionAction" method="smd">
        <interceptor-ref name="jsonStack">
            <param name="enableSMD">true</param>
        </interceptor-ref>
        <result type="json">
            <param name="enableSMD">true</param>
        </result>
    </action>
</package>

我不知道为什么,或者我缺少什么。 我一遍又一遍地阅读JSON plugin page

我想我只需要另一双眼睛。

注意:Tomcat 控制台中没有错误,也没有 JS 错误。

有人有线索吗? 干杯 杰夫·波特

【问题讨论】:

    标签: java javascript json struts2 json-rpc


    【解决方案1】:

    您忘记包含 javascript 代码。示例:

    <s:url id="smdUrl" namespace="/nodecorate" action="SMDAction" />
    <script type="text/javascript">
        //load dojo RPC
        dojo.require("dojo.rpc.*");
    
        //create service object(proxy) using SMD (generated by the json result)
        var service = new dojo.rpc.JsonService("${smdUrl}");
    
        //function called when remote method returns
        var callback = function(bean) {
            alert("Price for " + bean.type + " is " + bean.price);
        };
    
        //parameter
        var bean = {type: "Mocca"};
    
        //execute remote method
        var defered = service.doSomething(bean, 5);
    
        //attach callback to defered object
        defered.addCallback(callback);
    </script>
    

    你确定你调用的是 service.updateRowValueForField(key, value, fieldname) 而不是别的东西吗?

    此外,您的方法返回 void(例如,不返回任何内容)。你期望得到什么?

    【讨论】:

      【解决方案2】:

      新版本解决了我的问题。

      Google JSON plugin

      【讨论】:

      • 我知道它的旧帖子...但我也无法完成这项工作...当我说 service.doSomething 时,我在 2.2.3 和 javascript 中...它说 doSomething未定义...听起来合乎逻辑,因为在 Json 服务中没有说 doSomething 的方法。该示例不正确..那里缺少某些东西...
      【解决方案3】:

      我猜您需要更新smd() 方法以实际调用updateRowValueForField(),而不是简单地立即返回。看起来以前的开发人员从未真正连接过这些方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-03-16
        • 1970-01-01
        • 2021-12-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多