Я пытаюсь заставить работать код, написанный предыдущим разработчиком. Ага, теперь он покинул компанию. :-(
У меня есть вызов 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 нет.
У кого-нибудь есть подсказки? Ваше здоровье Джефф Портер




Я предполагаю, что вам нужно обновить метод smd(), чтобы фактически вызвать updateRowValueForField(), а не просто немедленно вернуться. Похоже, предыдущий разработчик никогда не подключал методы.
Вы забыли включить код 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 (ключ, значение, имя поля), а не что-то другое?
Кроме того, ваш метод возвращает пустоту (например, ничего не возвращает). Что ты ожидал получить?
Я знаю его старый пост ... но я тоже не могу выполнить эту работу ... я использую 2.2.3 и javascript, когда я говорю service.doSomething ... он говорит, что doSomething не определен ... звучит логично, как в службе Json нет метода, говорящего doSomething. Этот пример неверен ... там чего-то не хватает ...