Метод Java никогда не вызывался при использовании JSON RPC в Struts2
-
03-07-2019 - |
Вопрос
Я пытаюсь заставить работать некоторый код, который написал предыдущий разработчик. Да, теперь он покинул компанию. : - (
У меня есть вызов JSON RPC из кода JS. 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 (ключ, значение, имя поля), а не что-то другое? Р>
Кроме того, ваш метод возвращает пустоту (например, ничего не возвращает). Что вы ожидали получить?
Другие советы
Новая версия исправляет мои проблемы.
Я предполагаю, что вам нужно обновить метод smd ()
для фактического вызова updateRowValueForField ()
, а не просто немедленно возвращать его. Похоже, предыдущий разработчик никогда не подключал методы.