الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Problem With Dynamic Region

Featured Replies

بتاريخ:

السلام عليكم
الموضوع ليه علاقة بالبوست اللى عملتها قبل كدة و الخاصة بموضوع عرض رسالة "هل تريد الحفظ"
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 كدة

تم تعديل بواسطة tarek_fathi

بتاريخ:

الحقيقه مش عارفه بالظبط ايه سبب الايرور اللى عندك لانك لافف اوى فى الميثود ومستخدم الطريقه الاصعب ومفيش سبب يخلي اول ما تضغط على اى بوتون يعمل 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 ممكن تشوفها وتجربها كلها من هنا

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.