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
Budeğilmevcut 2.2 sürümünde standart EL kullanarak. Ancak bu şartı sağlamak için birkaç yolu vardır:
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.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.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.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.Tarzı Javabean ile gönderir alıcı yöntem olan kapsayıcı bir sınıf oluşturun.
İ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.
Nasıl xml belgelerindeki generic sınıf...
Nasıl olmayan sabit bir referans geçic...
Nasıl bir referans için .jilet gibi bi...
Nasıl Raylar içinde CSS 4 görüntüleri ...
Nasıl R veri referans ile bir satır si...