Domanda

Sto cercando di far funzionare del codice scritto da uno sviluppatore precedente. Sì, ora ha lasciato la compagnia. : - (

Ho ricevuto una chiamata RPC JSON dal codice JS. JS funziona perfettamente e il metodo callback recupera un oggetto (non un oggetto errore).

Ma il metodo sulla classe Java non viene mai colpito. Il metodo smd viene comunque colpito.


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>

Sono sconcertato sul perché o su ciò che mi manca. Ho letto pagina del plug-in JSON più e più volte.

Penso di aver solo bisogno di un'altra serie di occhi.

Nota: nessun errore nella console Tomcat, nessun errore JS.

Qualcuno ha qualche indizio? Saluti Jeff Porter

È stato utile?

Soluzione

Hai dimenticato di includere il codice javascript. Dall'esempio:

<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>

Sei sicuro di chiamare service.updateRowValueForField (chiave, valore, nome campo) e non qualcosa di diverso?

Inoltre, il metodo restituisce un vuoto (ad es. non restituisce nulla). Cosa ti aspettavi di ottenere?

Altri suggerimenti

La nuova versione risolve i miei problemi.

plugin Google JSON

Suppongo che sia necessario aggiornare il metodo smd () per chiamare effettivamente updateRowValueForField () anziché semplicemente restituire immediatamente. Sembra che lo sviluppatore precedente non abbia mai effettivamente collegato i metodi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top