Метод Java никогда не вызывался при использовании JSON RPC в Struts2 - PullRequest
2 голосов
/ 20 октября 2008

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

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

Кто-нибудь получил какие-нибудь подсказки? ура Джефф Портер

Ответы [ 3 ]

2 голосов
/ 20 октября 2008

Вы забыли включить код 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 голосов
/ 22 октября 2008

Новая версия исправляет мои проблемы.

Плагин Google JSON

1 голос
/ 20 октября 2008

Я предполагаю, что вам нужно обновить метод smd() для фактического вызова updateRowValueForField(), а не просто немедленно вернуться. Похоже, предыдущий разработчик никогда не подключал методы.

...