بتاريخ: 9 أبريل 201312 سنة comment_234763 السلام عليكم ورحمة الله وبركاتهانا عندى مشكله فى استخدام ال p:selectOneMenuوهى ان ال value الموجوده فى ال selectOneMenuلا تظهر فى ال inputtext موجود فى p:dialogوالذى يظهر عندما اضغط على p:commandputtonهذه هى ال managebean /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package beans; import dao.AdminDAO; import dao.UserRegister; import java.util.ArrayList; import javax.faces.bean.ManagedBean; import javax.faces.bean.ViewScoped; import javax.faces.context.FacesContext; import javax.faces.event.ValueChangeEvent; import javax.faces.model.SelectItem; /** * * @author shokry */ @ViewScoped @ManagedBean() public class FacultyMB { University university; Faculty faculty; public AdminDAO adminDAO; public University getUniversity() { if (university == null) { university = new University(); } return university; } public void setUniversity(University university) { this.university = university; } public Faculty getFaculty() { if (faculty == null) { faculty = new Faculty(); } return faculty; } public void setFaculty(Faculty faculty) { this.faculty = faculty; } public ArrayList<SelectItem> getUniversities() { ArrayList<University> lst = UserRegister.getUniversities(); ArrayList<SelectItem> items = new ArrayList<SelectItem>(); for (University t : lst) { items.add(new SelectItem(t.getUniversityId(), t.getName())); } return items; } public ArrayList<SelectItem> getUniFaculties() { ArrayList<Faculty> lst = UserRegister.getUniFaculties(university.getUniversityId()); ArrayList<SelectItem> items = new ArrayList<SelectItem>(); for (Faculty t : lst) { items.add(new SelectItem(t.getFacultyId(), t.getName())); } return items; } public void addUniversity() { adminDAO = new AdminDAO(); adminDAO.addUniversity(university.getName()); } public void editUniversity() { System.out.println("university is : " + university.getName() + ""); adminDAO = new AdminDAO(); adminDAO.editUniversity(university.getUniversityId(), university.getName()); } public void deleteUniversity() { adminDAO = new AdminDAO(); adminDAO.deleteUniversity(university.getUniversityId()); } public void addFaculty() { System.out.println("university is : " + university.getUniversityId() + " universityid is : " + university.getUniversityId()); adminDAO = new AdminDAO(); adminDAO.addFaculty(faculty.getName(), 3); } public void deleteFaculty() { adminDAO = new AdminDAO(); adminDAO.deleteFaculty(faculty.getFacultyId()); } public void editFaculty() { adminDAO = new AdminDAO(); adminDAO.editFaculty(faculty.getFacultyId(), faculty.getName()); } public void getinfo() { System.out.println("university is : " + university.getName() + " universityid is : " + university.getUniversityId()); } public void universityChange(ValueChangeEvent e) { university = (University) e.getNewValue(); FacesContext.getCurrentInstance().renderResponse(); } } والكود الآتى هو مابه المشكله حيث انFaculty.university و Faculty.university.name و Faculty.university.universityId دائما ب null ولا استطيع ان استخمها او اراها داخل اى dialogمع العلم ان name, universityId هى ال properties للكلاس university <h:form id="univerityForm"> <h:panelGrid columns="2" cellspacing="6" cellpadding="6"> <h:outputText value="Select University " style="size: 3; font-weight: bold;"/> <p:selectOneMenu id="university" value="#{facultyMB.university}"> <f:selectItems value="#{facultyMB.universities}" var="university" itemLabel="#{facultyMB.university.name}" /> <f:ajax listener="#{facultyMB.universityChange}" execute="@form"/> </p:selectOneMenu> </h:panelGrid> </h:form> <h:panelGrid columns="2" cellspacing="6" cellpadding="6"> <p:commandButton value="add" icon="ui-icon-plus" onclick="uniCreateDialogWidget.show();" style="font-size: .6em; font-style: italic; width: 40px; hight: .3px"> </p:commandButton> <p:commandButton value="edit" icon="ui-icon-plus" onclick="uniEditDialogWidget.show();" style="font-size: .6em; font-style: italic; width: 40px; hight: .3px"> <f:setPropertyActionListener target="#{facultyMB.university}" value="#{university}" /> </p:commandButton> </h:panelGrid> وهذا هو dialog pageوهنا ال vlauefacultyMB.university.nameلا ترجع بشئ ودائما تاتى معى ب null <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:p="http://primefaces.org/ui"> <h:body> <p:dialog widgetVar="uniEditDialogWidget" id="uniEditDialogId" height="150" width="500" modal="true" closable="true" draggable="false" resizable="false"> <h:form id="uniEditDialogForm" prependId="false"> <h:panelGrid columns="2"> <h:outputText value="University Name" /> <h:inputText value="#{facultyMB.university.name}" required="true" label="University Name"> <f:validateLength minimum="4" /> </h:inputText> <p:commandButton value="edit" icon="ui-icon-plus" action="#{facultyMB.editUniversity()}" oncomplete="closeDialogIfSucess(xhr, status, args, uniEditDialogWidget, 'uniEditDialogId')" /> <p:commandButton value="delete" action="#{facultyMB.deleteUniversity()}" oncomplete="closeDialogIfSucess(xhr, status, args, uniEditDialogWidget, 'uniEditDialogId')" /> <p:commandButton value="cancel" icon="ui-icon-cancel" onclick="uniEditDialogWidget.hide();" type="button" /> </h:panelGrid> </h:form> </p:dialog> </h:body> </html> ارجو المساعدهوشكرا للجروب الجميل تقديم بلاغ
بتاريخ: 9 أبريل 201312 سنة comment_234822 الاخ /shokry3 الكود به العديد والعديد من الاخطاء اولا: انت بتستخدم ال primfaces ومع ذلك فى ال p:selectoneMenu استخدمت f:ajax وليس p:ajax ثانيا: انت بتعمل set للuniversity بطرق كتيره اوى من غير اى داعى يعنى انت بتعملها set عند الاختيار من ال select one menu وعن طريق ال set property listener عند الضغط على البوتون ومع ذلك ال University بتبقى فى الحالتين null لان عندك اخطاء فى كل الطرق دى ثالثا: ازاى انت بتشاور على ال var فى ال select Items بعد ما تقفلها وتقفل الselect one menu هنا انت بتشير الى collection غير موجود رابعا: لازم حتحتاج converter ما دام ال value الخاصة بال select one menu حاجة غير ال String فأين هذا ال converter خامسا: مفيش داعى لكل الطرق دى ببساطه شديده لو انت عاوز ما تختاره من ال select one menu يظهر عندك فى ال dialog عرف متغير فى ال managed Bean وليكن private university SelectedUniversity // setter and getter وفى ال select one Menu حتخلى القيمة بتاعتها هو المتغير ده زى ما انت عامل بدون ajax او property listener على البوتون وبالتالى اول ما يختار المستخدم اى قيمة حيحصلها set فى ال bean ولازم طبعا تعمل converter عشان القيمة حتتاخد من السيليكت ك String وال converter حيحولها ل university وللاختصار عملت لك مثال بسيط مبنى على POJO فيه كلاس اسمه Student فيه properties ك (firstname و lastname وID وكده) وفى الصفحة فيها P:select one menu اول ما تختار اسم اى طالب وتضغط على ال p:commandbutton حيظهر لك p:dilaog فيه بيانات الطالب اللى اختارته طبعا انا عامله فى المثال converter عشان ياخد القيمة اللى طالعه string ويحولها لكلاس Student المثال معمول على Eclipse Juno ومجرباه على Glassfish 3.1.2 ملحوظه مينفعش تبقى عامل dialog وتضعه فى صفحة تانية الا فى حالة عمل ui:include لصفحة ال dialog فى الصفحة الرئيسية بتاعتك selectonemenu.rar تقديم بلاغ
بتاريخ: 9 أبريل 201312 سنة كاتب الموضوع comment_234829 شكرا يابشمهندسه على المشاركه وعلى المجهود الجميل انا لست مبتدئ فى ال J2EE حقيقة ولكن ليس لدى كثير من الخبرة فانا عملت set لل university بكذا طر يقة لانى كنت بجرب ارجع ال value وكانت بردو بتجيلى ب null كلامك مظبوط بالنسبة للأخطاء اللى عندى فشكرا على الملاحظة والرد السريع وانا ساقوم بتظبيط وتعديل الاخطاء عندى فى الكود very thanks تقديم بلاغ
بتاريخ: 10 أبريل 201312 سنة كاتب الموضوع comment_234833 شكرا كتير ...بس انا جربت ومشيت على نفس طريق المثال اللى فى المرفق بس بردو ال value بترجع ب null >>> ده كود ال selectmenu فى ال jsf page <h:form id="univerityForm"> <h:panelGrid columns="4" cellspacing="6" cellpadding="6"> <h:outputText value="Select University " style="size: 3; font-weight: bold;"/> <p:selectOneMenu value="#{facultyMB.university}" effect="fade" converter="university"> <f:selectItem itemLabel="Select One" itemValue="" /> <f:selectItems value="#{facultyMB.universities}" var="university" itemLabel="#{university.name}" itemValue="#{university}"/> </p:selectOneMenu> <p:commandButton value="add" icon="ui-icon-plus" onclick="uniCreateDialogWidget.show();" style="font-size: .6em; font-style: italic; width: 40px; hight: .3px"> </p:commandButton> <p:commandButton value="edit" icon="ui-icon-plus" onclick="uniEditDialogWidget.show();" style="font-size: .6em; font-style: italic; width: 40px; hight: .3px"> <f:setPropertyActionListener target="#{facultyMB.university}" value="#{university}" /> </p:commandButton> <p:dialog widgetVar="uniEditDialogWidget" id="uniEditDialogId" height="150" width="500" modal="true" closable="true" draggable="false" resizable="false"> <h:form id="uniEditDialogForm" prependId="false"> <h:panelGrid columns="2"> <h:outputText value="University Name" /> <h:inputText value="#{facultyMB.university.name}" required="true" label="University Name"> <f:validateLength minimum="4" /> </h:inputText> <p:commandButton value="edit" icon="ui-icon-plus" action="#{facultyMB.editUniversity()}" oncomplete="closeDialogIfSucess(xhr, status, args, uniEditDialogWidget, 'uniEditDialogId')" /> <p:commandButton value="delete" action="#{facultyMB.deleteUniversity()}" oncomplete="closeDialogIfSucess(xhr, status, args, uniEditDialogWidget, 'uniEditDialogId')" /> <p:commandButton value="cancel" icon="ui-icon-cancel" onclick="uniEditDialogWidget.hide();" type="button" /> </h:panelGrid> </h:form> </p:dialog> </h:panelGrid> </h:form> وده كود ال converter مع العلم ان ال values اللى فى selectmenu انا بجبها من ال database /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package converter; /** * * @author shokry */ import beans.Faculty; import beans.FacultyMB; import beans.University; import java.util.ArrayList; import java.util.List; import javax.faces.application.FacesMessage; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.convert.Converter; import javax.faces.convert.ConverterException; import javax.faces.convert.FacesConverter; @FacesConverter(forClass = beans.University.class, value = "university") public class UniConverter implements Converter { public static List<University> universities; static { FacultyMB facultyMB = new FacultyMB(); universities = facultyMB.getAllUniversities(); } @Override public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) { if (arg2.trim().equals("")) { return null; } else { try { int number = Integer.parseInt(arg2); for (University u : universities) { if (u.getUniversityId() == number) { return u; } } } catch (NumberFormatException exception) { throw new ConverterException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "Conversion Error", "Not a valid player")); } } return null; } @Override public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) { if (arg2 == null || arg2.equals("")) { return ""; } else { return String.valueOf(((University) arg2).getUniversityId()); } } } تقديم بلاغ
بتاريخ: 10 أبريل 201312 سنة comment_234868 اولا: لازم تعرف ان ال converter مينفعش تبقى فيه غير اتنين method هم ( get as object and get as String) انا مليت فيه الليست عشان مفيش داتابيز عندى اما انت فحط الاتنين ميثود بس والليست جيبه عادى من الداتابيز وكمان خطأ انك لو عاوز تستدعى ال managed bean تاخد منها اوبجكت الmanaged bean ليست كلاس عشان تستدعيها بالطريقة دى يوجد طرق معروفه لاستدعاء ال managed bean عموما خلينا فى الصفحة انا شايفه ان الايرور اللى عندك كالاتى أولا: مفيش اى داعى ل setPropertyActionListener اللى على البوتون لان المتغير بيتعمل له set عند الاختيار من السيليكت علاوه انه مش شايف ال university var لانك بتشاور على ال var بعد ما خرجت من السيليكت. ثانيا: انت واضع form جوه form وده خطأ اقفل ال form الاولى قبل ما تفتح ال p:dialog ثالثا: فين ال update Attribute اللى مفروض تضعه على ال p:command button الخاص بال Edit المفروض تقوله عند الضغط عليه اعمل update لل form اللى جوه ال dialog واللى اسمها عندك uniEditDialogForm عموما شوف اولا بالنسبة للصفحة الاولى اللى فيها ال select حيبقى الكود بتاعك كالاتى بعد التصحيح <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:p="http://primefaces.org/ui"> <h:head> </h:head> <h:body> <h:form id="univerityForm"> <h:panelGrid columns="4" cellspacing="6" cellpadding="6"> <h:outputText value="Select University " style="size: 3; font-weight: bold;"/> <p:selectOneMenu value="#{facultyMB.university}" effect="fade" converter="university"> <f:selectItem itemLabel="Select One" itemValue="" /> <f:selectItems value="#{facultyMB.universities}" var="university" itemLabel="#{university.name}" itemValue="#{university}"/> </p:selectOneMenu> <p:commandButton value="edit" icon="ui-icon-plus" onclick="uniEditDialogWidget.show();" update=":uniEditDialogForm"> </p:commandButton> </h:panelGrid> </h:form> <ui:include src="/dialogs/updateUniversity.xhtml" /> </h:body> </html> وحتعمل صفحة تانية اسمها هنا updateUniversity فى فولدر اسمه dialogs زى ما شاورنا عليها فى ال ui:include حيكون الكود كالاتى لل dilaog <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:p="http://primefaces.org/ui"> <h:body> <p:dialog widgetVar="uniEditDialogWidget" id="uniEditDialogId" height="150" width="500" modal="true" closable="true" draggable="false" resizable="false"> <h:form id="uniEditDialogForm" prependId="false"> <h:panelGrid columns="2"> <h:outputText value="University Name" /> <h:inputText value="#{facultyMB.university.name}" required="true" label="University Name"> <f:validateLength minimum="4" /> </h:inputText> <p:commandButton value="edit" icon="ui-icon-plus" action="#{facultyMB.editUniversity()}" update=":univerityForm" oncomplete="closeDialogIfSucess(xhr, status, args, uniEditDialogWidget, 'uniEditDialogId')" /> </h:panelGrid> </h:form> </p:dialog> </h:body> </html> خللى بالك من update اللى ضفناها على ال command button فى كلا الصفحتين عشان تعمل تحديث للفورم حتى بعد التعديل أما لو المشكلة استمرت وال input داخل ال dialog لسه بييجى ب null فاعملى مثال بسيط بس كامل يعنى اعمل مثال على الuniversity فقط فيه سكريبت لجدول ال university وال Entity bean بتاعتها وال session bean اذا كنت بتستخدم EJB يعنى عاوزه مثال كامل وانا حشوف ازاى بتيجى ب Null ولو عملت المثال اعمله على ال Eclipse تقديم بلاغ
بتاريخ: 12 أبريل 201312 سنة كاتب الموضوع comment_234930 شكرا كتيرانا عملت مثال صغير باستخدام ال database والحمد لله اشتغلتولكن تقابلنى مشكله ..وهى انى اريد ان اضيف selectonemenu اخرى تحتوى على داتا ترتبط بال university عن طريق ال ID ولكنها لا تعمل كما فى المثال المرفقايضا اذا اردت ان اضيف datatable بحيث يعرض كل ال faculties المرتبطه بال selected university عن طريق ال universityID فالمفروض اعمل ايه بمثال صغير تم تعديل 12 أبريل 201312 سنة بواسطة shokry3 تقديم بلاغ
بتاريخ: 12 أبريل 201312 سنة comment_234946 في تقنية ADF نقوم بالتنفيذ عن طريق Cascading LOV في تقنية JSF فنقوم بعمل كود يقوم بإرجاع القائمة المطلوبة بحيث يستقبل هذا الكود معامل Parameter يمثل الجامعة المطلوبة ثم نربط هذه القائمة بالكومبو الثاني تقديم بلاغ
بتاريخ: 21 أبريل 201312 سنة كاتب الموضوع comment_235263 الحمد لله solved ذى ما شرحت الاخت/ Hala Salem وان شاء الله هرفع ال project اللى انا بعمله كله هنا شكرا وربنا يوفقنا تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.