نموذج جافا سكريبت تقديم لتنشيط انتقالات تدفق ويب الربيع مع تكامل JSF

StackOverflow https://stackoverflow.com/questions/381434

سؤال

أنا وضع تطبيق باستخدام Webflow Spring Webflow 2، Facelets و JSF. تحتوي إحدى صفوفي على صفحة يجب أن تؤدي نموذجا إلى بعض الأحداث. لكل إجراء مختلف، يجب تقديم طريقة عرض مختلفة. لذلك، أحاول تنشيط رمز JavaScript التالي لأداء التقديم:

function myFormSubmit( eventId ) {
   var formAction = document.myForm.action;
   document.myForm.action = formAction + '&_eventId=' + eventId;
   document.myForm.submit();
}

لسوء الحظ، هذا لا يثير الانتقال المطلوب في تدفقي. لا تتغير الصفحة. هل يعرف أحد كيفية التعامل مع هذا؟

شكرا، الكسندر

هل كانت مفيدة؟

المحلول 3

لقد حصلت على الحل في منتدى ربيع Webflow. وفقا ل Jeremy Grelle، لا يؤدي تقديم "_eventid" إلى التحولات عند دمج ملفات الويب الربيعية إلى JSF. الحل الذي قدمه هو إنشاء Phaselistener JSF يقوم بإنشاء إجراء JSF عند إرسال المعلمة "_eventid".

يمكن رؤية رمز Phaselistener في http://forum.springsource.org/showthread.php؟p=219358# Post219358..

نصائح أخرى

لا تعرف أي شيء عن singrfaceletssf، لكنني أعتقد أن معالج الأحداث يجب أن تعود true. وبعد وإلا فإن متصفحك لن يقدم النموذج.

وبالتالي:

function myFormSubmit( eventId ) {
   var formAction = document.myForm.action;
   document.myForm.action = formAction + '&_eventId=' + eventId;
   document.myForm.submit();
   return true;
}

عند التفتيش الأقرب، هناك مجموعة من المشاكل مع هذا الرمز.

Document.myform.Agion هي طريقة غير قياسية للحصول على العناصر. أفضل طريقة متصفح عبر الإنترنت هي:

document.getElementById('myFormId');

يؤدي إلغاء عمياء acpersand إلى عنوان URL الخاص بالشكل إلى أن هناك بالفعل معلمة URL أخرى بالفعل، لذلك هناك بالفعل علامة استفهام بعد عنوان URL. إذا لم يكن هذا هو الحال فواصل السطر التالي:

document.myForm.action = formAction + '&_eventId=' + eventId;

أخيرا، إذا أنت تدعو هذه الوظيفة كمعالج Onsubmit، أعتقد أنك يجب أن تعود فقط، وعدم الاتصال myForm.submit() طريقة

يعد تعديل النموذج طريقة سيئة للغاية لإضافة معلومات إلى تقديم نموذج. أقترح وضع مدخلات مخفية في النموذج الخاص بك والتي يمكنك ملءها باستخدام EventID الخاص بك.

هل تبحث عن هذه المعلمة في معايير الحصول على حصولك أو علاقات البريد الخاصة بك؟ لن يظهر في المنشور.

تحديث:

حسنا، لذلك لتوضيح، جرب هذا ...

تغيير وظيفتك للقيام بذلك:

function myFormSubmit( eventId ) {
   var formAction = document.myForm.action;
   //document.myForm.action = formAction + '&_eventId=' + eventId;
     var myAction = document.createElement('input');
     myAction.setAttribute('name', '_eventId');
     myAction.setAttribute('type', 'hidden');
     myAction.setAttribute('value', eventId);
     document.myForm.appendChild(myAction);
   document.myForm.submit();
}

اختبار في أي متصفح (غير IE) * ومعرفة ما إذا كان يعمل. إذا كان الأمر كذلك، فإن GET VS. Post Param هي المشكلة.

* non-IE: trying to set the name or type in IE will FAIL, thus don't test there.

هل هناك أي سبب لا يمكنك استخدام مكونات وجوه الربيع التي تأتي مع SWF؟ هناك علامة ajaxevent، يمكنك استخدامها لتوفير العناصر. إنه ينشط على أحداث JavaScript المعطاة (OnClick، onchange) ويستدعي إجراء من اختيارك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top