Struts2でJSON RPCを使用中にJavaメソッドが呼び出されなかった
-
03-07-2019 - |
質問
以前の開発者が書いたコードを動作させようとしています。 うん、彼は今会社を辞めた。 :-(
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エラーはありません。
誰にも手がかりはありますか? 乾杯 ジェフポーター
解決
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を返します(たとえば、何も返しません)。何を期待していましたか
他のヒント
新しいバージョンは私の問題を修正します。
すぐに戻るのではなく、 updateRowValueForField()
を実際に呼び出すには、 smd()
メソッドを更新する必要があると思います。前の開発者が実際にメソッドを接続したことはないようです。
所属していません StackOverflow