2010-10-05 4 views
0

J'essaye de convertir le code de scriptlet suivant en EL. J'ai essayé ce qui suit (ci-dessous), mais je n'arrive pas à le faire fonctionner. getValue() est une méthode hors de ConfigFactory qui retourne une chaîne:comment obtenir un objet et invoquer une méthode dans jstl EL dans un JSP

Dans un auditeur, je mis le configFactory comme event.getServletContext().setAttribute("ConfigFactory", new ConfigFactory());

Dans mon code scriptlet il y a: (et il fonctionne très bien)

<% 
    ConfigFactory cf = (ConfigFactory) application.getAttribute("ConfigFactory"); 
%> 
Value from scriptlet= <%=cf.getValue()%> <br/> 

EL me donne du mal:

<c:set var="cf" value="${initParam['ConfigFactory']}"/> 
<c:out value="${cf.getValue}"/> <!-- try # 1 --> 
<c:out value="${cf.value}"/>  <!-- try # 2 --> 
+0

'$ {cf.value}' _should_ travail. Que se passe-t-il quand vous essayez cela? –

Répondre

1

Cette ligne

<c:set var="cf" value="${initParam['ConfigFactory']}"/> 

fait essentiellement la même chose que

pageContext.setAttribute("cf", application.getInitParameter("ConfigFactory")); 

Vous ne voulez pas. Débarrassez-vous de cette ligne. Dans EL, vous avez implicitement un accès direct à tous les attributs de requête, de session et d'application par son nom. Ce qui suit

${ConfigFactory} 

fait essentiellement la même chose que

out.print(pageContext.findAttribute("ConfigFactory")); 

Les tests PageContext#findAttribute() respectivement PageContext#getAttribute(), HttpServletRequest#getAttribute(), HttpSession#getAttribute() et enfin ServletContext#getAttribute() jusqu'à ce que la première valeur non nulle est été trouvée. C'est plus ce que tu veux.

Vous pouvez enfin accéder à la méthode getValue() sur elle la manière habituelle EL:

${ConfigFactory.value} 

Non lié au problème, mais vous auriez normalement donner exemple Identifiants un nom commençant par minuscules. Vous ne faites pas non plus ConfigFactory ConfigFactory = new ConfigFactory();, non? :)

0

Non testé:

${applicationScope.ConfigFactory.value} 
Questions connexes