Pregunta

Estoy intentando que funcione un código que un desarrollador anterior ha escrito. Sí, ahora él dejó la compañía. :-(

Tengo una llamada JSON RPC que se realiza desde el código JS. El JS funciona bien y el método de devolución de llamada recupera un objeto (no un objeto de error).

Pero el método en la clase Java nunca se ve afectado. Sin embargo, el método smd se ve afectado.


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>

Estoy sorprendido de por qué, o lo que me estoy perdiendo. He leído página del complemento JSON una y otra vez.

Creo que solo necesito otro par de ojos.

Nota: no hay errores en la consola de Tomcat, no hay errores de JS.

¿Alguien tiene alguna pista? Aclamaciones Jeff Porter

¿Fue útil?

Solución

Olvidaste incluir el código javascript. Del ejemplo:

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

¿Está seguro de que llama a service.updateRowValueForField (clave, valor, nombre de campo) y no es algo diferente?

Además, tu método devuelve un vacío (por ejemplo, no devuelve nada). ¿Qué esperabas conseguir?

Otros consejos

La nueva versión soluciona mis problemas.

complemento JSON de Google

Supongo que necesita actualizar el método smd () para llamar a updateRowValueForField () en lugar de simplemente regresar inmediatamente. Parece que el desarrollador anterior nunca en realidad conectó los métodos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top