2008-10-20 14 views
2

我試圖讓一些以前的開發人員編寫的代碼工作。是的,他現在離開了公司。 :-(在Struts2中使用JSON RPC時永遠不會調用Java方法

我有一個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 plugin page

我想我只是需要另一雙眼睛。

注意:Tomcat控制檯沒有錯誤,沒有JS錯誤。

任何人有任何線索? 乾杯 傑夫·波特

回答

2

您忘記了包含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(鍵,值,字段名),而不是不同的東西?

此外,你的方法返回一個void(例如不返回任何東西)。你期望得到什麼?

1

我猜你需要更新smd()方法實際調用updateRowValueForField()而不是簡單地立即返回。看起來以前的開發者從來沒有真正聯繫過這些方法。

2

新版本修復了我的問題。

Google JSON plugin

+0

我知道它的舊帖子......但無論哪種...我在2.2.3和JavaScript中,當我說service.doSomething ...它說DoSomething的我不能夠得到這個工作沒有定義......聽起來合乎邏輯,因爲沒有方法說明Json服務中的某些東西。那個例子是不正確的..在那裏缺少一些東西...... – 2011-12-20 17:16:14

相關問題