الانتقال إلى المحتوى
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.

متي نحتاج Bean

Featured Replies

بتاريخ:

السلام عليكم ورحمة الله وبركاته

الاخوة خبراء
ADf
متي احتاج ان اختار انشاء
Bean
للصفحةعند الانشاء وفي حالة لم اقوم باخيار انشاء ال
bean
هل يمكن عمله بعد انشاء الصفحة ؟
وكيف يمككني انشائه في هذه الحالة ؟
وشكرا

  • الردود 31
  • المشاهدات 5.9k
  • البداية
  • اخر رد

أكثر المشاركين في هذا الموضوع

بتاريخ:

القاعدة بسيطة جداً ، عندما تحتاج أن تكتب أي كود ينفذ business معين في الصفحة فيتم كتابته في الـ bean.
عادة كل صفحة سيكون معها bean لأنه من النادر أن نجد صفحة لا تحتاج إلى كود. قد تكون هذه الحالة موجودة في الشاشات البسيطة مثل شاشات الـ lookup خاصة أن ADF تقريباً يقوم بكل شئ فيها دون كتابة كود تقريباً
إذا أردت صفحة بالـ bean بعد إنشائها فقم بفتح الصفحة في Design Mode ثم افتح القائمة Design ثم Page Properties. افتح الـ Tab باسم Component Binding ثم اختر Auto Bind وبعدها إما أن تختار واحدة من الـ beans الموجودة أو تقوم بإنشاء bean جديدة

بتاريخ:
  • كاتب الموضوع

شكرا علي الرد
وجزاك الله خيرا كثيرا
ورزقك الجنة ووالديك

وكنت احب ان اسالك سؤال اخر
ما هو المقابل
when_button_pressed
الموجود في الفورم بلدير
في
ADF

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

بتاريخ:

في أداة af:commandButton تجد خاصية action وهي المناظرة لـ when_button_pressed

بتاريخ:
  • كاتب الموضوع

لقد قمت باستخدامها ولكنها لا تعمل ولا تخرج الرسالة التي اريدها ان تظهر

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

بتاريخ:

ما الكود الذي كتبته بالضبط؟

بتاريخ:
  • كاتب الموضوع

public String cb6_action() {
// Add event code here...

if (it1=="10") {
FacesMessage message = new FacesMessage(" The Department is :10 ");
FacesContext.getCurrentInstance().addMessage(null, message);
it4.VALUES_MAP.values()="10";
//it4.VALUES="10";
}
else //if (it1!=10)
return null ;
}

بتاريخ:

قم بتوضيح تعريف المتغير it1 حتى أعرف نوعه بالضبط

بتاريخ:
  • كاتب الموضوع

ال
it1
هو ال id
بتاع الحقل الخاص بكود القسم
Deptno

بتاريخ:
  • كاتب الموضوع

لقد قمت بعمل هذا الكود بناء علي المساعدة منك في المشاركة الاخري ولكنه لا يعمل

public String cb6_action() {
// Add event code here...

BindingContainer bc = BindingContext.getCurrent().getCurrentBindingsEntry();
DCBindingContainer dcbc = (DCBindingContainer)bc;
String deptId = (String)dcbc.findIteratorBinding("DeptView1Iterator").getCurrentRow().getAttribute("Deptno");
FacesContext context = FacesContext.getCurrentInstance();
FacesMessage message = new FacesMessage("deptId = " + deptId);
context.addMessage(null, message);
return null;

}

وتظهر هذه الرسالة

Error 500--Internal Server Error

<pre>javax.faces.el.EvaluationException: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String at org.apache.myfaces.trinidad.component.MethodExpressionMethodBinding.invoke(MethodExpressionMethodBinding.java:51) at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)</pre>

بتاريخ:

هذا معناه أن deptId ليس String وإنما Integer
فيجب أن يكون السطر كالتالي
Integer deptId = (Integer)dcbc.findIteratorBinding("DeptView1Iterator").getCurrentRow().getAttribute("Deptno");

بتاريخ:
  • كاتب الموضوع

هل
public String cb6_action()
هذه صحيحة
وكذلك
return null;
ام لابد ان يكون
return ;
شيء اخر
وشكرا جزيلا علي الرد

بتاريخ:
  • كاتب الموضوع

شيء اخر لقد قمت بعمل
public boolean IsCallUpDateRequired(){
BindingContainer bc = (BindingContainer)BindingContext.getCurrent().getCurrentBindingsEntry();
DCBindingContainer dcbc = (DCBindingContainer)bc;
String POC = (String)dcbc.findIteratorBinding("PtrsSec1TransmittalView1Iterator").getCurrentRow().getAttribute("Sec1StatusPoc");
if (POC=="P"){
return true;
}
return false;
}
ولكنها لا تظهر في الاكسبريشن بلدير
Expression Builder
لاختيارها

بتاريخ:
  • كاتب الموضوع

ظهرت الرسالة اخيرا وشكرا جزيلا
ولكن حتي الان لا اعرف لماذا لا تظهر اسم
public boolean IsCallUpDateRequired(){
في
Expression Builder
هل يوجد اي متطلبات لذلك

بتاريخ:

لأنك كتبت أول حرف capital في حين أنه يجب أن يكون small كالتالي isCallUpDateRequired

بتاريخ:
  • كاتب الموضوع

شكرا جزيلا علي الرد
وجزاك الله خيرا كثيرا ورزقك الجنة و والديك

بتاريخ:
  • كاتب الموضوع

لقد فمت بعمل هذه الدالة لعمل الحقل
CallUpDate
requierd
لكنها لا تعمل بشكل صحيح
وبالتالي وضعت رسالة حتي اعرف قيمة المتغير
ولكن الرسالة تظهر 4 مرات والقيمة الاول ربما تكون مختلفة في الثلاثة الاخري في حالة تغير القيمة من اليست
حيث قيمة اليست
("P","O","C")
ودائما تدخل داخل ال
if
سواء كانت القيمة
p
او غير ذلك كان الشرط غير صحيح
او القيمة
poc
غير صحيحة
ولكن الرسالة توضح قيمة المتغير صحيحة

public boolean isCallUpDateRequired(){
BindingContainer bc = (BindingContainer)BindingContext.getCurrent().getCurrentBindingsEntry();
DCBindingContainer dcbc = (DCBindingContainer)bc;
String poc = (String)dcbc.findIteratorBinding("PtrsSec1TransmittalView1Iterator").getCurrentRow().getAttribute("Sec1StatusPoc");

if (poc!="P"){
FacesContext context = FacesContext.getCurrentInstance();
FacesMessage message = new FacesMessage("deptId = " + poc);
context.addMessage(null, message);
return false;
}
return true;
}

بتاريخ:

شوف بالنسبه للطريقه بتاعتك دى فالميثود حتبقى كالاتى


public boolean isrequired() {
   	BindingContainer bc = (BindingContainer)BindingContext.getCurrent().getCurrentBindingsEntry();
   	DCBindingContainer dcbc = (DCBindingContainer)bc;
   	String poc = (String)dcbc.findIteratorBinding("StudentsView1Iterator").getCurrentRow().getAttribute("Gender");
   	if (poc.equals("p"))
       	return true;
   	else
       	return false;}
  



وطبعا حتخللى ال Select One Choice ال AutoSubmit الخاص بها ب True وال Partial Trigger لل required Input Text هو ال Id الخاص بال Select One Choice ولا تنسى تغيير اسم ال Iterator وال Attribute للقيم اللى عندك

وطبعا الحل ده عن طريق عمل ميثود boolean فى ال required حيخللى ال Validation Fired حتى مع تغيير قيمه ال Select one choice (يعنى لازم تدخل قيمه فى الاول قبل تغيير قيمه ال Select ) والحل الافضل طبعا هو عمل ميثود فى ال Value Change Listener

بتاريخ:

مقارنة النصوص في الجافا تكون عن طريق الدالة equals إذا كانت حالة الأحرف مهمة ، وعن طريق الدالة equalsIgnoreCase إذا لم تكن حالة الأحرف مهمة.
لا تستخدم == و != لمقارنة النصوص

بتاريخ:
  • كاتب الموضوع

شكرا جزيلا علي الرد
وجزاكم الله خيرا كثيرا ورزقكم الجنة

بس Value Change Listener
علي اي حقل هل هو علي الليست ام علي الحقل
requierd

بتاريخ:
  • كاتب الموضوع

ولو يوجد مثال لذلك نكون شاكرين
بحيث عندما تتغير القيمة يصبح حقل
required
والاخر قيمته
null

بتاريخ:

Value Change Listener علي الليست

بتاريخ:

شوف حفترض انك منزل الاتريبوت فى الصفحه ك ADF Select One choice ومختار fixed list ال Value Change Listener حتبقى كالتالى


public void StatusChanged(ValueChangeEvent valueChangeEvent) {
   	if (valueChangeEvent.getNewValue().equals("p")) {
       	this.getT1().setRequired(true);
   	}
   	else {
       	this.getT1().setRequired(false);
   	}
   	AdfFacesContext.getCurrentInstance().addPartialTarget(this.getT1());
}




طبعا t1 هو عباره عن RichInputText ومعموله set and Get فى الكلاس (ده اللى القيمه حتبقى required ام لا حسب نتيجه ال select choice ) ومتنساش تعمله binding على ال input text اللى فى الصفحه عندك وتخللى ال autosubmit الخاصه بال select one choice ب true ومش محتاج تعمل Partail Trigger لل Input Text على ال Select One Choice لاننا عملناها برمجيا

حاجه تانيه محتاج بس initial value اول ما الصفحه يتعملها render بحيث نحدد ال input Text ده حيبقى required ام لا قبل تغيير قيمه ال Select وده بيتم كالاتى حتيجى على ال input text وفى حقل ال required حتكتب كده بعد تغيير اسم الاتريبوت اللى عندك


#{bindings.Gender.inputValue=='p'}

بتاريخ:
  • كاتب الموضوع

شكرا جزيلا علي الرد
وجزاكي الله خيرا كثيرا ورزقكي الجنة و والديك

/**********************************************************/
ولكن يظهر هذا الخطأ
<RegistrationConfigurator> <handleError> ADF_FACES-60096:حدث استثناء بالخادم أثناء تصيير جزئي لصفحة PPR, رقم 1
javax.servlet.ServletException
<ViewHandlerImpl> <_checkTimestamp> يتم تشغيل Apache Trinidad مع تمكين التحقق من التوقيت. ويجب عدم استخدام ذلك في بيئة إنتاج. راجع خاصية org.apache.myfaces.trinidad.CHECK_FILE_MODIFICATION في WEB-INF/web.xml
<UIXEditableValue> <_isBeanValidationAvailable> A Bean Validation provider is not present, therefore bean validation is disabled
<LifecycleImpl> <_handleException> ADF_FACES-60098:تلقت دورة حياة Faces استثناءات غير معالجة في المرحلة PROCESS_VALIDATIONS 3
javax.faces.el.EvaluationException: java.lang.NullPointerException

والكود تم كتابته كما يلي

public void StatusChanged(ValueChangeEvent valueChangeEvent) {

if (valueChangeEvent.getNewValue().equals("P")) {
this.getId8().setRequired(true);
} else {
this.getId8().setRequired(false);
}
AdfFacesContext.getCurrentInstance().addPartialTarget(this.getId8());
}
ويتم استدعائه من الخاصية
valueChangeListener
هكذا
#{backingBeanScope.FillPTRSDataForm2.StatusChanged}

بتاريخ:
  • كاتب الموضوع

يبدو ان
initial value
لا يعمل بشكل صحيح معي
فاين بالضبط يتم وضعه
وهذا هو الخطأ

java.lang.NullPointerException

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

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

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

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

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

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.