بتاريخ: 19 أبريل 201114 سنة comment_210890 Hi allthis segment of code display a popup message with only one button "OK" button FacesContext context = FacesContext.getCurrentInstance(); context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, "Save Pending Changes !", null)); I need to modify this code to display the popup with three Buttons"Yes - No- Cancel"Is this possibleI search in the Java Doc for the Class FacesMessage but i did not find a way to show three buttons تقديم بلاغ
بتاريخ: 19 أبريل 201114 سنة كاتب الموضوع comment_210894 I find another solution . I can useRichPopup class but acually I need example explaining how to add three buttons for the popup at runtime تم تعديل 19 أبريل 201114 سنة بواسطة tarek_fathi تقديم بلاغ
بتاريخ: 19 أبريل 201114 سنة كاتب الموضوع comment_210897 hi againI find out that I can add RichDialog component and set the type to Yes-no-cancel buttonsbut I want to know how to programaticly add RichDialog to RichPopup at runtime?I check the RichPopup class for a method to add a child component but i ddinot find تقديم بلاغ
بتاريخ: 19 أبريل 201114 سنة كاتب الموضوع comment_210902 I have another problem : the popup is not show private void displayWarningMessage() { //creates an instance of popup and set the id, which is equal to the tag <af:popup id="pop"/> in jsf page RichPopup popup = new RichPopup(); popup.setId("msgpop"); //creates an instance of dialog and sets its properties, which is equal to the tag <af:dialog id="dlg" title="Title"/> in jsf page RichDialog dialog = new RichDialog(); dialog.setId("dlg"); dialog.setTitle("Warning"); dialog.setType(dialog.TYPE_YES_NO_CANCEL); //creates an instance of dialog and sets its properties, which is equal to the tag <af:outputText id="otindlg" value="Welcome"/> oracle.adf.view.rich.component.rich.output.RichOutputText opText = new oracle.adf.view.rich.component.rich.output.RichOutputText(); opText.setId("otindlg"); opText.setValue("Do you want to save changes before exit?"); dialog.getChildren().add(opText); popup.getChildren().add(dialog); RichPopup.PopupHints ph = new RichPopup.PopupHints(); ph.add(RichPopup.PopupHints.HintTypes.HINT_ALIGN, RichPopup.PopupHints.AlignTypes.ALIGN_BEFORE_END); popup.show(ph); }} My question is there missing steps in this code to show the popup?? تقديم بلاغ
بتاريخ: 19 أبريل 201114 سنة comment_210922 اخ / طارق اعتقد ان كل ما تحتاجه هو القليل من التركيز ليس اكثر لو عاوز تظهر pop up فدى component فى ال ADF مالهاش اى علاقه بال FacesMessage واللى فهمته ان كل مشكلتك تتلخص انك عاوز تظهر pop up فيها yes-no-cancel ودى سهله اوى اولا: حتضع داخل الصفحه بتاعتك pop up من ال component palette وتخلى ال Content Delivery هو lazy Uncached وده طبعا من ال property inspector ثانيا: حتضع داخل ال pop up بتاعتك dialog وده component عادى جدا بتسحبه دراج ودروب من ال Component palette و تضعه داخل ال Pop up ومن ناحية عنوانه فده بتكتبه انت بنفسك فى البروبرتى انسبكتور بعد ما بتقف عليه وكمان بتختار ال type بتاعه من ال property inspector مثلا cancel-ok -okcanel-yesnocancel الخ ......................... وفى ال dialog listener ودى برضه موجوده فى ال Property Inspector ممكن تضع ميثود تنفذ حاجه معينه عند الضغط على yes او ok ثالثا: حتضع الرساله بتاعتك داخل output Text جوه ال dialog ولاحظ ان كل الشغل لغاية دلوقتى هو component بنحطها فى الصفحه ومشتغلناش اى كود دلوقتى بقه اخر حاجه اننا عاوزين نستدعى ال pop up دى عند الضغط على بوتون معين وده قدامك حلين وبما انك مصر على الحل البرمجى فعند الضغط على البوتون حتستدعى الميثود دى public String showpopup () { FacesContext facesContext = FacesContext.getCurrentInstance(); ExtendedRenderKitService service = Service.getRenderKitService(facesContext, ExtendedRenderKitService.class); service.addScript(facesContext,"AdfPage.PAGE.findComponent('popup1').show();"); return null; } وطبعا popup1 هو ال id الخاص بال pop up وعلى فكره لاحظت فى الميثود الاخيره بتاعتك الكثير من الاخطاء يعنى مثلا انت عاوز ازاى تضع الميثود دى على بوتون وهى مبترجعش حاجه (void method) وبعدين ايه سبب وضعك لكل شىء برمجى الديالوج وال pop up اللى جواه حتى عنوانه ونوعه طيب ايه فايده استخدامك لل ADF ?????ضع كل شىء داخل الصفحه من ال component palette ثم استدعيه برمجيا لا اكثر من الباكينج بين الخاصه بالصفحه ولو راجعت المثال اللى فى الموضوع الخاص برساله الحذف حتلاقى التطبيق العملى للكلام ده تقديم بلاغ
بتاريخ: 20 أبريل 201114 سنة كاتب الموضوع comment_210933 السلام عليكمشكرا يا بشمهندسة هاله على الرد انا عملته فعلا و اشتغل معايا بس انا هشرح السيناريو اللى عندى و لية فكرت اعملها كدة انا عندى صفحة jspx واحد بس و مسميها UIShell.jspx و هى مبنية على تيمبلت انا عاملهاالصفحة دى فيها dynamic task flow region <af:region id="main" value="#{bindings.region.regionModel}" partialTriggers="::pt_cmi1 ::cmi1 ::proc ::cmi3 ::cmi4"/> فى ال bindings بتاع الصفحة دى انا ضايف Executable task flow و اسمها region و هى binded على method بترجع TaskFlowId public TaskFlowId getDynamicTaskFlowId() { if (!this.pendingChangesExist()) { AdfFacesContext adfFacesContext = AdfFacesContext.getCurrentInstance(); String currentTaskFlowId = (String)adfFacesContext.getPageFlowScope().get("CurrentTaskFlowId"); if (currentTaskFlowId == null || currentTaskFlowId.trim().equals("") == true) { currentTaskFlowId = taskFlowId; } oldTaskFlowId = currentTaskFlowId; return TaskFlowId.parse(currentTaskFlowId); } else { //displayWarningMessage String response = showpopup(); } return TaskFlowId.parse(oldTaskFlowId); } علشان كدة كانت الميثود القديمة اللى كنت عاملها كانت voidبس مشتغلتش كويس معايا علشان كدة لما شوفت الحل بتاعك قولت ما انا ممكن احط ال popup دى فى التمبلت و خلاصو عملتها و اشتغلتو لكم جزيل الشكر تقديم بلاغ
بتاريخ: 20 أبريل 201114 سنة كاتب الموضوع comment_210946 الوقتى ظهر مشكلة تانية غريبةبس قبل ما اقول المشكلة هقول انا اصلا عاوز اعمل ايةهو ببساطة انا عندى اكتر من task flow بيظهرو كلهم ك fragments فى صفحة واحدة من خلال مينيوو اللى عاوزة ان لما اليوزر يضيف سجل او يعدل او يحزف سجل و بعدين يضغط على المنيو او على home يعنى يخرج من الtaskflow اللى كان فيها و يروح على مكان تانىتظهرله رساله "هل تريد حفظ التعديلات؟" امل بالنسبة للمشكلة و هى ان الرسالة فى اول مرة بتظهر فعلا و لما اليوزر يظغط على YES بيحفظ لكن لما يعدل فى بيانات فى صفحة تانية و يخرج من الصفحة و يروح على مكان تانى مبتظهرش الرسالة مش كدة و بس دة و بيحفظ لوحدة كدة مع نفسة التغيرات فى الداتابيزعملت debug للكود و مشيت معاه واحدة واحدة public class dynamicTaskFlowManager { private String taskFlowId = "/WEB-INF/flows/welcome.xml#welcome"; private String oldTaskFlowId; private String saveChangeDialogRespose; public TaskFlowId getDynamicTaskFlowId() { AdfFacesContext adfFacesContext = AdfFacesContext.getCurrentInstance(); String currentTaskFlowId = (String)adfFacesContext.getPageFlowScope().get("CurrentTaskFlowId"); if (!this.pendingChangesExist()) { if (currentTaskFlowId == null || currentTaskFlowId.trim().equals("") == true) { currentTaskFlowId = taskFlowId; } oldTaskFlowId = currentTaskFlowId; } else { // show save changes alert showSaveChangesDialog(); if (getSaveChangeDialogRespose() == "YES") { commitChanges(); hideSaveChangesDialog(); } } return TaskFlowId.parse(currentTaskFlowId); } private boolean pendingChangesExist() { return this.getApplicationModule("#{data.DhamanADMServicesDataControl.dataProvider}").getTransaction().isDirty(); } private ApplicationModule getApplicationModule(String dataProvider) { FacesContext fc = FacesContext.getCurrentInstance(); Application app = fc.getApplication(); ExpressionFactory elFactory = app.getExpressionFactory(); ELContext elContext = fc.getELContext(); ValueExpression valueExp = elFactory.createValueExpression(elContext, dataProvider, Object.class); return (ApplicationModule)valueExp.getValue(elContext); } public dynamicTaskFlowManager() { super(); } public void showSaveChangesDialog() { FacesContext facesContext = FacesContext.getCurrentInstance(); ExtendedRenderKitService service = Service.getRenderKitService(facesContext, ExtendedRenderKitService.class); service.addScript(facesContext, "AdfPage.PAGE.findComponent('pt1:msgPopup').show();"); } public void hideSaveChangesDialog() { FacesContext facesContext = FacesContext.getCurrentInstance(); ExtendedRenderKitService service = Service.getRenderKitService(facesContext, ExtendedRenderKitService.class); service.addScript(facesContext, "AdfPage.PAGE.findComponent('pt1:msgPopup').hide();"); } public void handleSaveChangesDialog(DialogEvent event) { if (event.getOutcome().equals(DialogEvent.Outcome.yes)) { setSaveChangeDialogRespose("YES"); } else if (event.getOutcome().equals(DialogEvent.Outcome.no)) { setSaveChangeDialogRespose("NO"); } else { setSaveChangeDialogRespose("CANCEL"); } } public void setSaveChangeDialogRespose(String saveChangeDialogRespose) { this.saveChangeDialogRespose = saveChangeDialogRespose; } public String getSaveChangeDialogRespose() { return saveChangeDialogRespose; } public String commitChanges(){ BindingContext bctx = BindingContext.getCurrent(); DCDataControl dcDataControl = bctx.getDefaultDataControl(); dcDataControl.commitTransaction(); return null; } } الميثود اللى اسمها TaskFlowId هى دى اللى بنبدا بيهاو فى الميثود دى باختصار انا بشوف اول هل فى تعديلات حصلتلو فيه بتظهر الرسالةو ال dialog بيرجع ال eventلو الevent ب yesبندة للميثود commitChanges اللى بتحفظ فى الداتابيزلما جيت اعمل debug و لما وصلت بلظبط للجذء دة showSaveChangesDialog(); if (getSaveChangeDialogRespose() == "YES") { commitChanges(); hideSaveChangesDialog(); } } لقيت اولا الpopup مش بتظهرو بعدين بيدخل فى ال IF condition و يكمل فيها و يعمل حفظ و يخفى ال popupكل دة من غير ما تظهر popup و لا اختار yesكانه محتفظ بال response فى الكاشمش عارف اية المشكلة دى ممكن تكون بسبب ايةارجوو المساعدة تقديم بلاغ
بتاريخ: 20 أبريل 201114 سنة كاتب الموضوع comment_210947 سبحان الله بعد ما كتبت ال post قولت لما اقراها كدة و لما قريتها اكتشفت الخطأ فينالمفروض انى ارجع ال saveChangeDialogRespose ب null بعد ما تعمل commit علشان ميحتفظشى بالرد القديمو غيرت الكود ل showSaveChangesDialog(); if (getSaveChangeDialogRespose() == "YES") { commitChanges(); setSaveChangeDialogRespose(null); hideSaveChangesDialog(); } و اشتغلت انا عارف انى عامل ازعاج على المنتدى معلش تقديم بلاغ
بتاريخ: 20 أبريل 201114 سنة comment_210948 انا عجبنى جدا انك بتكتب المشكلة ولما تحلها بتكتبه بردهجزاك الله كل خيرتمنياتى لك بالتوفيق فى حياتك تقديم بلاغ
بتاريخ: 20 أبريل 201114 سنة comment_210967 ما دام المشكله اتحلت خلاص ولكن الموضوع فكرنى ب post كانت فى ال OTN عن موضوع اجبار ال user على حفظ التغييرات او التراجع عنها قبل مغادرته للصفحه او الفراجمنتس او حتى الضغط على back وكان الحل بسيط بعمل كلاس واحده للابليكيشن كله والخلاصه ان دور الكلاس دى انها بتعمل check على commit فى كل مره اليوزر بيعمل navigation لو هو enabled بتظهر له رساله بالحفظ او التراجع قبل عمل اى navigation والموضوع كان global mechanism تقديم بلاغ
بتاريخ: 4 يونيو 201312 سنة comment_237084 أخت Hala Salem في ردك الخاص بشرح كيفية عمل واستدعاء Pop up فيها Yes and No قلتي دلوقتى بقه اخر حاجه اننا عاوزين نستدعى ال pop up دى عند الضغط على بوتون معين وده قدامك حلين وبما انك مصر على الحل البرمجى فعند الضغط على البوتون حتستدعى الميثود دى فأرجو التوضيح أن امكن اذا كان هناك طريقة غير الحل البرمجي وممكن أستخدامهاوشكرا تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.