بتاريخ: 27 أبريل 201114 سنة comment_211128 السلام عليكمالموضوع ليه علاقة بالبوست اللى عملتها قبل كدة و الخاصة بموضوع عرض رسالة "هل تريد الحفظ" http://www.araboug.org/ib/index.php?showtopic=46744المشكلة الوقتى غريبةالوقتى انتو عارفين انى عامل dynamic region فى الصفحة بتاعتى و انى رابط ال region دى ب managed bean باختصار الكلاس دى بتروح تجيب اسم التاسك من على المنيو لما اليوزر يعمل click على المنيو و توديها لل dynamic region علشان تعرضهامثلا لما اليوزر بيطلب شاشة الموظفين <af:commandMenuItem id="person" text="#{viewcontrollerBundle.MISSION_PERSONS}"> <af:setActionListener from="/WEB-INF/flows/editPersionMission.xml#editPersionMission" to="#{pageFlowScope.CurrentTaskFlowId}"/> </af:commandMenuItem> بس هى قبل ما تعمل الموضوع دة بتعمل check اول هل اليوزر كان فاتح صفحة و كان بيعدل في بيانات او ضاف بيانات و لسة معملش commit علشان تطلعله رسالة هل تريد الحفظ قبل ما يروح على اى مكان تانى if (!this.pendingChangesExist()) { if (getCurrentTaskFlowId() == null || getCurrentTaskFlowId().trim().equals("") == true) { //currentTaskFlowId = taskFlowId; setCurrentTaskFlowId(homePageFlowId); } oldTaskFlowId = getCurrentTaskFlowId(); } else { // show save changes alert showSaveChangesDialog(); if (getSaveChangeDialogRespose() == "YES") { commitChanges(); setSaveChangeDialogRespose(null); hideSaveChangesDialog(); } else if (getSaveChangeDialogRespose() == "NO") { rollBackChanges(); setSaveChangeDialogRespose(null); hideSaveChangesDialog(); } else { System.out.println("cancel "); // setCurrentTaskFlowId(oldTaskFlowId) ; } } المشكلة بقى ان ال managed bean مش بتتنفذ بس لما اليوزر يختار من المنيو لا دى بيحصلها call كل ما اعمل اى حاجةيعنى لو بس عملت new record و لا عملت كليك بس على ريكود فى الصفحة بيحصلها call و تعمل بقى check هلى حصل تعديل و لا لا و لو حصل تعديل تطلع رسالة هل تريد الحفظو دى مشكلة لانى مثلا لما اختار من LOV مثلا وانا لسة بدخل بيانات فبيحصل call للكلاس دى و الشرط بيتحقق انه حصل تعديل فعلا فى السجل و يطلع رسالة " هل تريد الحفظ"بتظهر دايما كل ما افتح LOV انا مش عاوز يحصل call للكلاس دى الا لما اضغط على المنيو مش كل مرة يحصلها call كدة تم تعديل 27 أبريل 201114 سنة بواسطة tarek_fathi تقديم بلاغ
بتاريخ: 27 أبريل 201114 سنة comment_211171 الحقيقه مش عارفه بالظبط ايه سبب الايرور اللى عندك لانك لافف اوى فى الميثود ومستخدم الطريقه الاصعب ومفيش سبب يخلي اول ما تضغط على اى بوتون يعمل submit وييتحرك من التاسك فلو اللى انت عليه وبالتالى يستدعى الميثود بتاعتك عموما اللى فهمته انك عاوز اول ما تتحرك لتاسك فلو تانى يجيب لك رساله هل تريد حفظ البيانات يبقى الميثود الخاصه بعمل check على التغييرات حتكون كالتالى private boolean pendingChangesExist() { ControllerContext cctx = ControllerContext.getInstance(); return cctx.getCurrentViewPort().getTaskFlowContext().isDataDirty(); } اما بقى فى المثود اللى حتحدد اى تاسك فلو حييجى فيبقى الكود زى كده public String getDynamicTaskFlowId() { if (this.pendingChangesExist()) { showSaveChangesDialog(); } else { String currentTaskFlowId = (String)adfFacesContext.getPageFlowScope().get("CurrentTaskFlowId"); } return null; } اما باه لو استمرت المشكله ولم تحل ففى بدائل كثيره جدا لموضوع pending changes ممكن تشوفها وتجربها كلها من هنا تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.