Struts2에서 JSON RPC를 사용하는 동안 Java 방법은 호출되지 않았습니다.
-
03-07-2019 - |
문제
이전 개발자가 작성한 코드를 작동 시키려고합니다. 네, 이제 그는 회사를 떠났습니다. :-(
JS 코드에서 JSON RPC 호출이 이루어집니다. 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 오류가 없습니다.
누구나 단서가 있습니까? 제프 포터를 건배합니다
해결책
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 (키, 값, 필드 이름)를 호출하고 다른 것이 아닌가?
또한, 당신의 메소드는 공허를 반환합니다 (예 : 아무것도 반환하지 않습니다). 무엇을 얻을 것으로 기대 했습니까?
다른 팁
새로운 버전은 내 문제를 해결합니다.
나는 당신이 그것을 업데이트해야한다고 생각합니다 smd()
실제로 호출하는 방법 updateRowValueForField()
단순히 즉시 돌아 오기보다는. 이전 개발자가 실제로이 방법을 연결하지 않은 것 같습니다.
제휴하지 않습니다 StackOverflow