我正在尝试使用前一个开发人员编写的代码。 是的,他现在离开了公司。 : - (
我有一个从JS代码发出的JSON RPC调用。 JS all运行良好,回调方法返回一个对象(不是错误对象)。
但是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错误。
有人有任何线索吗? 干杯 杰夫波特
答案 0 :(得分: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(例如,不返回任何内容)。你期望得到什么?
答案 1 :(得分:2)
新版本解决了我的问题。
答案 2 :(得分:1)
我猜你需要更新smd()
方法来实际调用updateRowValueForField()
,而不是简单地立即返回。看起来以前的开发人员实际上从未真正联系过这些方法。