Question

Je sais que vous pouvez utiliser la balise <jsp:useBean> pour instancier des objets dans des fichiers JSP sans recourir au code de scriptlet. Cependant, j'aimerais instancier un entier dont la valeur est le résultat d'une expression EL, quelque chose comme:

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

Bien sûr, cela ne fonctionnera pas car les objets Integer n’ont pas de propriété nommée 'montant', le seul moyen de définir leur valeur consiste à utiliser un paramètre constructeur (les objets Integer sont immuables). Est-il possible d'instancier un tel objet et de le définir sans utiliser de code de scriptlet?

Merci, Don

Était-ce utile?

La solution

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

Autres conseils

Les wrappers primitifs n’ont pas non plus de constructeur par défaut, vous ne pouvez même pas en initialiser un de cette façon.

Je ne suis pas sûr que EL soit censé être utilisé de cette manière. C'est plus un langage de template. Il n’est pas clair en quoi l’avantage que vous essayez de faire par rapport à quelque chose comme:

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

Et ensuite, juste en utilisant <% = total% > où vous avez besoin que la valeur soit sortie. Vous pouvez aussi faire:

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

si vous voulez que la valeur soit dans l'étendue de la page, comme le ferait useBean.

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top