2008-12-08 7 views
1

Je sais que vous pouvez utiliser la balise <jsp:useBean> pour instancier des objets dans des pages JSP sans avoir recours au code de script. Cependant, je voudrais instancier un entier qui la valeur est le résultat d'une expression EL, quelque chose comme:Création d'objets immuables dans les pages JSP

<jsp:useBean id="total" class="java.lang.Integer"> 
    <jsp:setProperty name="amount" value="${param1 + param2}"/> 
</jsp:useBean> 

Bien sûr, cela ne fonctionnera pas parce que les objets entiers ne sont pas une propriété nommée « montant », la seule façon dont leur valeur peut être définie est via un paramètre constructeur (ie les objets entiers sont immuables). Est-il possible d'instancier un tel objet et de définir sa valeur sans utiliser de code scriptlet?

Merci, Don

Répondre

1

<c:set var="amount" value="${param1 + param2}" scope="page" />

0

Si vous avez un haricot, pouvez-vous mettre à jour juste le haricot avec param1 et 2? Créez une méthode, setAmount (param1, param2) et définissez-la avant d'utiliser getAmount(), ce que le bean va appeler.

1

Les wrappers primitifs n'ont pas de constructeur par défaut, donc vous ne pouvez même pas les initialiser de cette façon.

Je ne suis pas sûr que EL soit supposé être utilisé de cette façon. C'est plus d'un langage de modèle. On ne sait pas quel avantage ce que vous essayez de faire a plus de quelque chose comme:

<% 
    Integer total = new Integer(param1 + param2); 
%> 

Et puis juste en utilisant <% = totale%> où vous avez besoin de la valeur à la sortie. Vous pouvez également faire:

<% 
    pageContext.setAttribute("total", new Integer(param1 + param2)); 
%> 

si vous souhaitez que la valeur soit dans la portée de la page comme le fera useBean.

Questions connexes