SORU
17 EYLÜL 2010, Cuma


Nasıl EL sabitler referans için?

Nasıl bir JSP sayfasında EL ile bir sabitler referans musunuz?

Sabit URL adlı Addresses bir arayüzü var. Giderek bir scriplet ile başvuru yapabileceğimi biliyorum: <%=Addresses.URL%>, ama nasıl bu EL kullanarak yapacağım?

CEVAP
17 EYLÜL 2010, Cuma


Budeğilmevcut 2.2 sürümünde standart EL kullanarak. Ancak bu şartı sağlamak için birkaç yolu vardır:

  1. Uygulamaya koyduğunuz Map<String, Object> bir kapsam koydu. EL, harita değerleri ${map.key} ${map['key.with.dots']} her zamanki Javabean şekilde erişilebilir.

  2. Unstandard taglib (maven2 repo here): <un:useConstants> kullanın

    <%@ taglib uri="http://jakarta.apache.org/taglibs/unstandard-1.0" prefix="un" %>
    <un:useConstants className="com.example.YourConstants" var="constants" />
    

    Bu şekilde ${constants} Her zamanki Javabean şekilde erişilebilir.

  3. Kullanım Javaranch bir yere this article altındaki desribed olarakCCC <ccc:constantsMap> .

     <%@ taglib uri="http://bibeault.org/tld/ccc" prefix="ccc" %>
     <ccc:constantsMap className="com.example.YourConstants" var="constants" />
    

    Bu şekilde ${constants} her zamanki Javabean yolu da erişilebilir.

  4. Eğer JSF2, sonra kullanıyorsanız OmniFaces <o:importConstants> kullanabilirsiniz.

     <html ... xmlns:o="http://omnifaces.org/ui">
     <o:importConstants type="com.example.YourConstants" />
    

    Bu şekilde #{YourConstants} Her zamanki Javabean yolu da erişilebilir.

  5. Tarzı Javabean ile gönderir alıcı yöntem olan kapsayıcı bir sınıf oluşturun.

  6. İlk varsayılan çözümleyici ve sürekli eksik, sonra bir temsilci varlığı taramaları, aksi sabit değer yerine döndüren özel EL çözümleyici oluşturmak.


Güncelleme: EL 3.0 beri (JSR-341 Java parçası EE 7), EL başvurusu sabitler mümkündür <o:importConstants> aşağı yukarı aynı şekilde. java.lang.* tüm sınıflar için örtülü olarak zaten ithal ve ${Boolean.TRUE} ${Integer.MAX_VALUE} gibi kullanılabilir. Özel sabitler için, ImportHandler#importClass() ya #importPackage() belki kullanmak gerekir.

JSP için, aşağıdaki gibi sunucu uygulaması kapsamında bir dinleyici olarak bu applicationwide yapılandırabilirsiniz

@WebListener
public class Config implements ServletContextListener {

    @Override
    public void contextInitialized(ServletContextEvent event) {
        JspFactory.getDefaultFactory().getJspApplicationContext(event.getServletContext()).addELContextListener(new ELContextListener() {
            @Override
            public void contextCreated(ELContextEvent event) {
                event.getELContext().getImportHandler().importClass("com.example.YourConstants");
            }
        });
    }

    // ...
}

AKSARAY için aşağıdaki gibi bir uygulama bean kapsamlı o applicationwide yapılandırabilirsiniz

@ManagedBean(eager=true)
@ApplicationScoped
public class Config {

    @PostConstruct
    public void init() {
        FacesContext.getCurrentInstance().getApplication().addELContextListener(new ELContextListener() {
            @Override
            public void contextCreated(ELContextEvent event) {
                event.getELContext().getImportHandler().importClass("com.example.YourConstants");
            }
        });
    }

}

"Üretime hazır 7 Uygulama, Önemli olan Java EE 4.0, bir hata var" bu hala çalışmak için başarısız onda. bu akımın ilk sürümü sadece olması gerektiğini kaydetti Bu cevap da bakın: Constants in EL 3.0 - Function 'T' not found.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • How to Cook ?

    How to Cook

    31 Ocak 2007
  • metal571

    metal571

    30 Mayıs 2006
  • Snazzy Labs

    Snazzy Labs

    9 Aralık 2008