在 Struts2 中使用 JSON RPC 时从未调用过 Java 方法
我正在尝试让以前的开发人员编写的一些代码正常工作。 是的,他现在离开了公司。 :-(
我有一个从 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错误。
有人有任何线索吗? 干杯 杰夫·波特
I'm trying to get some code working that a previous developer has written.
Yep, he now left the company. :-(
I have a JSON RPC call being made from the JS code.
The JS all runs fine and the callback method gets an object back (not an error object).
But the method on the Java class never gets hit.
The smd method does get hit though.
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>
I'm stumped as to why, or what I'm missing.
I've read JSON plugin page over and over.
I think I just need another set of eyes.
Note: no errors in the Tomcat console, no JS errors.
Anyone got any clues?
Cheers
Jeff Porter
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您忘记包含 JavaScript 代码。 从示例中:
您确定您调用了 service.updateRowValueForField(key, value, fieldname) 而不是不同的东西吗?
此外,您的方法返回一个 void (例如,不返回任何内容)。 你期望得到什么?
You forgot to include the javascript code. From the example:
Are you sure you call service.updateRowValueForField(key, value, fieldname) and not something different?
Further, your method returns a void (e.g. doesn't return anything). What did you expect to get?
新版本解决了我的问题。
Google JSON 插件
New version fixes my problems.
Google JSON plugin
我猜测您需要更新
smd()
方法以实际调用updateRowValueForField()
而不是简单地立即返回。 看起来以前的开发人员从未真正连接过这些方法。I'm guessing that you need to update the
smd()
method to actually callupdateRowValueForField()
rather than simply return immediately. Looks like the previous developer never actually hooked up the methods.