সার্ভলেট ভিত্তিক নিদর্শনগুলিতে যেমন @WebServlet, @WebFilterএবং @WebListener, আপনি একটি "প্লেইন ভ্যানিলা" জেএসএফ @ManagedBean @RequestScopedদ্বারা ধরে নিতে পারেন:
Bean bean = (Bean) request.getAttribute("beanName");
এবং @ManagedBean @SessionScopedদ্বারা:
Bean bean = (Bean) request.getSession().getAttribute("beanName");
এবং @ManagedBean @ApplicationScopedদ্বারা:
Bean bean = (Bean) getServletContext().getAttribute("beanName");
নোট করুন যে এটি পূর্বশর্ত যে শিমটি ইতিমধ্যে জেএসএফ দ্বারা স্বতঃআরিত হয়েছে। অন্যথায় এগুলি ফিরে আসবে null। এরপরে আপনাকে ম্যানুয়ালি মটরশুটি তৈরি করতে হবে এবং ব্যবহার করতে হবে setAttribute("beanName", bean)।
আপনি যদি @Namedজেএসএফ ২.৩ এর পরিবর্তে সিডিআই ব্যবহার করতে সক্ষম হন @ManagedBeanতবে এটি আরও বেশি সহজ, বিশেষত কারণ আপনার আর ম্যানুয়ালি মটরশুটি তৈরি করার দরকার নেই:
@Inject
private Bean bean;
মনে রাখবেন যে আপনি যখন ব্যবহার করছেন তখন এটি কাজ করবে না @Named @ViewScopedকারণ শিমটি কেবলমাত্র জেএসএফ দর্শন রাষ্ট্রের দ্বারা চিহ্নিত করা যেতে পারে এবং এটি কেবল তখনই উপলভ্য হবে যখন FacesServletডাকা হবে। এর আগে যে ফিল্টারটি চলে তার আগে কোনও @Injectএড অ্যাক্সেস করা @ViewScopedসর্বদা নিক্ষেপ করবে ContextNotActiveException।
কেবলমাত্র আপনি যখন ভিতরে থাকবেন তখনই আপনি @ManagedBeanব্যবহার করতে পারেন @ManagedProperty:
@ManagedProperty("#{bean}")
private Bean bean;
মনে রাখবেন যে এটি এক @Namedবা @WebServletঅন্য কোনও শৈল্পিকের অভ্যন্তরে কাজ করে না । এটি সত্যই @ManagedBeanকেবল ভিতরে কাজ করে ।
আপনি যদি ক এর অভ্যন্তরে না থাকেন @ManagedBeanতবে এটি FacesContextসহজেই উপলভ্য হয় (যেমন FacesContext#getCurrentInstance()ফিরে আসে না null), আপনি এটি ব্যবহার করতে পারেন Application#evaluateExpressionGet():
FacesContext context = FacesContext.getCurrentInstance();
Bean bean = context.getApplication().evaluateExpressionGet(context, "#{beanName}", Bean.class);
যা নিম্নলিখিত হিসাবে সুবিধাজনক হতে পারে:
@SuppressWarnings("unchecked")
public static <T> T findBean(String beanName) {
FacesContext context = FacesContext.getCurrentInstance();
return (T) context.getApplication().evaluateExpressionGet(context, "#{" + beanName + "}", Object.class);
}
এবং নিম্নলিখিত হিসাবে ব্যবহার করা যেতে পারে:
Bean bean = findBean("bean");
আরো দেখুন: