• 0
Speed_Of_Light

حقن managed bean في أخرى

سؤال

السلام عليكم

لدي مشروع تطبيق ويب أستخدم فيه JSF، فيه الصنفين الآتيين:

package session;

import javax.inject.Named;
import javax.enterprise.context.SessionScoped;
...

@Named("user")
@SessionScoped
public class UserBean implements Serializable {
// private fields
...

// Setters & getters
...
}

package jsfc;

import javax.enterprise.context.SessionScoped;
import javax.inject.Inject;
import javax.inject.Named;
import session.UserBean;
...

@Named("transController")
@SessionScoped
public class TransController implements Serializable {

@Inject private UserBean currentUser;
...

public TransController() {
}

public String createFromUser() {
// here's the problem: currentUser fields are nulled ...
int id = currentUser.getId();
// id == 0 !
...
return create();
}
...
}

المشكلة أن خصائص الغرض currentUser فارغة (null أو 0 ...)

أي أن عملية حقن الـ UserBean فاشلة ...

أين الخطأ ؟ وما الحل ؟!

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

6 إجابة على هذا السؤال .

  • 0

السلام عليكم

من معلوماتي القليلة عن Dependency Injection انه يتم وضع القيم الافتراضية في ملف الـ Config كما في Spring او عند استخدام JSF مع Spring

هذا والله اعلم

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

أخي الفاضل ..

ماهو كود اسناد القيمة

currentUser.setId;

ربما كانت المشكله في الاسناد وليس في الاستدعاء لانه من الطبيعي اذا كان الاسناد خاطئ النتيجه ستكون null

دمت في حفظ الله...

تم تعديل بواسطه JAVA FOR ALL
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

@Ahmed Dalatony:

ليست المشكلة بالقيم الافتراضية، المشكلة أن الحقن يفشل حيث أنه ليس بإمكاني تغيير القيم.

@JAVA FOR ALL:

إنها مجرد setter method عادية:

    public void setId(int newValue) {
id = newValue;
}

ملاحظة: مازلت بحاجة لجواب حتى الآن والـ 40 نقطة محفوظة :)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ربما انك نسيت أن تضع الكود التالي في faces-config.xml


<managed-bean>
<managed-bean-name>transController</managed-bean-name>
<managed-bean-class>TransController</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>

<managed-bean>
<managed-bean-name>user</managed-bean-name>
<managed-bean-class>UserBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>

أو ربما هذا يفيدك

http://www.codingtiger.com/questions/java/problem-injecting-Sessionscoped-bean-in-Managed-bean.html

دمت بحفظ الله ..

تم تعديل بواسطه JAVA FOR ALL
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .