2

以前の開発者が書いたコードを動作させようとしています。ええ、彼は今会社を辞めました。:-(

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 プラグインのページを何度も読みました。

もう一組の目が必要だと思います。

注: Tomcat コンソールにエラーはなく、JS エラーもありません。

手がかりを得た人はいますか?乾杯 ジェフ・ポーター

4

3 に答える 3

2

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 を返します (たとえば、何も返さない)。あなたは何を得ることを期待していましたか?

于 2008-10-20T16:42:32.510 に答える
2

新しいバージョンは私の問題を修正します。

Google JSON プラグイン

于 2008-10-22T11:37:14.093 に答える
1

すぐに戻るのではなく、smd()実際に呼び出すようにメソッドを更新する必要があると思います。updateRowValueForField()前の開発者が実際にメソッドを接続したことがないようです。

于 2008-10-20T16:40:26.290 に答える