SORU
13 NİSAN 2010, Salı


İsmi tarafından yönetilen AKSARAY fasulye almak Sunucu uygulaması ile ilgili herhangi bir sınıfta

Hangi isimle referans benim @ManagedBeans etmek istiyorum özel bir sunucu uygulaması (AJAX/JSON) yazmaya çalışıyorum. Harita umuyorum:

http://host/app/myBean/myProperty

için:

@ManagedBean(name="myBean")
public class MyBean {
    public String getMyProperty();
}

Normal bir sunucu adı ile bir bean yüklemek mümkün mü? Sunucu uygulaması veya yardımcı kullanabileceğim bir OLUMSUZLUK var mı?

Tüm bu çok açıktır Bahar kurban gibiyim.

CEVAP
13 NİSAN 2010, Salı


Bir Sunucu uygulaması, kapsamlı fasulye isteği ile ulaşabilirsiniz:

Bean bean = (Bean) request.getAttribute("beanName");

ve oturum kapsamlı fasulye:

Bean bean = (Bean) request.getSession().getAttribute("beanName");

ve uygulama fasulye ile kapsamı:

Bean bean = (Bean) getServletContext().getAttribute("beanName");

Eğer bir bağımlılık enjeksiyon çalıştırıyorsanız yetenekli çerçeve/konteyner ve fasulye @Named CDI yerine OLUMSUZLUK daha kolay @ManagedBean, tarafından yönetilmektedir:

@Inject
private Bean bean;

Sen varken kapsamı, ne olursa olsunaslındaFacesContext iç (istek FacesServlet ile servis edilmiş geçerli HTTP yani), sonra normal JSF2 yolu Application#evaluateExpressionGet() kullanarak

FacesContext context = FacesContext.getCurrentInstance();
Bean bean = context.getApplication().evaluateExpressionGet(context, "#{beanName}", Bean.class);

aşağıdaki gibi convenienced olabilir

@SuppressWarnings("unchecked")
public static <T> T findBean(String beanName) {
    FacesContext context = FacesContext.getCurrentInstance();
    return (T) context.getApplication().evaluateExpressionGet(context, "#{"   beanName   "}", Object.class);
}

ve aşağıdaki gibi kullanılabilir

Bean bean = findBean("bean");

Zaten içine girince ancak @ManagedBean @ManagedProperty kullanarak daha açıklayıcı olduğu için temiz.

@ManagedProperty("#{bean}")
private Bean bean;

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Adam Outler

    Adam Outler

    19 EKİM 2006
  • Eddie Bravo

    Eddie Bravo

    17 EKİM 2006
  • Mr. H

    Mr. H

    1 Temmuz 2012