2008-10-20 2 views
2

이전 개발자가 작성한 일부 코드를 얻으려고합니다. 네, 그는 이제 회사를 떠났습니다. :-(Struts2에서 JSON RPC를 사용하는 동안 Java 메소드가 호출되지 않았습니다.

내가 JS 코드에서 만든되는 JSON의 RPC 호출을 가지고있다. 는 JS 모두가 잘 실행하고 콜백 방법 (안 오류 개체).

그러나의 방법을 다시 개체를 가져옵니다 자바 클래스는 공격하지 없구요. 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 plugin page을 계속 읽었습니다.

다른 눈이 필요하다고 생각합니다.

참고 : Tomcat 콘솔에는 오류가없고 JS 오류는 없습니다.

누구나 단서가 있습니까? 건배 제프 포터

답변

2

자바 스크립트 코드를 포함하는 것을 잊었습니다.

<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 (키, 값, 필드 이름)가 아니라 뭔가를 호출 확신 : 예에서?

또한 메소드가 무효를 반환합니다 (예 : 아무 것도 반환하지 않음). 당신은 무엇을 얻을 것으로 예상 했습니까?

1

나는 당신이 실제로 updateRowValueForField() 전화보다는 단순히 즉시 반환 할 smd() 방법을 업데이트해야 같은데요. 이전 개발자가 실제로 메소드를 연결 한 적이없는 것처럼 보입니다.

2

새 버전으로 제 문제가 해결되었습니다.

Google JSON plugin

+0

나는 옛 게시물을 알고 ...하지만 하나 ... 내가 service.doSomething를 말할 때 내가 2.2.3와 자바 스크립트입니다 ... 그것은 해봐요 말한다 나는이 일을 얻을 수 아니다 정의되지 않았습니다 ... Json 서비스에서 doSomething을 말하는 메소드가 없으므로 논리적으로 들립니다. 그 예는 정확하지 않습니다. 뭔가 빠졌습니다 ... –

관련 문제