طريقة جافا أبدا دعا أثناء استخدام JSON RPC في Struts2
-
03-07-2019 - |
سؤال
وأنا أحاول الحصول على بعض التعليمات البرمجية العاملة التي مطور السابق قد كتب. نعم، غادر الآن الشركة. : - (
ولدي مكالمة RPC JSON التي تبذل من رمز JS. شبيبة جميع يدير على ما يرام وطريقة رد يحصل على الكائن مرة أخرى (وليس كائن الخطأ).
ولكن الطريقة على فئة Java لم يحصل ضرب. طريقة مصلحة الارصاد الجوية لا تحصل على ضرب بالرغم من ذلك.
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 مرارا وتكرارا.
وأعتقد أنني بحاجة فقط مجموعة أخرى من العيون.
ملحوظة: عدم وجود أخطاء في وحدة تحكم القط، لا JS أخطاء
وأي شخص حصل على أي أدلة؟ في صحتك جيف بورتر
المحلول
وأنت نسيت أن تتضمن شفرة جافا سكريبت. من المثال:
<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 (مفتاح، قيمة، FIELDNAME) وليس شيئا آخر؟
وعلاوة على ذلك، طريقتك بإرجاع الفراغ (على سبيل المثال لا يعود أي شيء). ماذا تتوقع أن تحصل عليه؟
نصائح أخرى
ونسخة جديدة بإصلاح مشاكلي.
وانا التخمين التي تحتاج إلى تحديث طريقة smd()
للاتصال الواقع updateRowValueForField()
بدلا من مجرد العودة فورا. يبدو المطور سابق أبدا مدمن مخدرات فعليا الطرق.