Метод Java никогда не вызывается при использовании JSON RPC в Struts2

Я пытаюсь заставить работать код, написанный предыдущим разработчиком. Ага, теперь он покинул компанию. :-(

У меня есть вызов 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 нет.

У кого-нибудь есть подсказки? Ваше здоровье Джефф Портер

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
0
1 662
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Я предполагаю, что вам нужно обновить метод 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 (ключ, значение, имя поля), а не что-то другое?

Кроме того, ваш метод возвращает пустоту (например, ничего не возвращает). Что ты ожидал получить?

В новой версии мои проблемы исправлены.

Плагин Google JSON

Я знаю его старый пост ... но я тоже не могу выполнить эту работу ... я использую 2.2.3 и javascript, когда я говорю service.doSomething ... он говорит, что doSomething не определен ... звучит логично, как в службе Json нет метода, говорящего doSomething. Этот пример неверен ... там чего-то не хватает ...

Jigar Shah 20.12.2011 21:16

Другие вопросы по теме