2010-05-31 19 views
11

Tengo esta, que está trabajando:Asignación resultado de otra etiqueta JSTL como valor de una etiqueta de JSTL

<c:choose> 
    <c:when test="${sometest}"> 
     Hello, world! 
    </c:when> 
    <c:otherwise> 
     <fmt:message key="${page.title}" /> 
    </c:otherwise> 
</c:choose> 

Y quiero cambiarlo a esto:

<c:choose> 
    <c:when test="${sometest}"> 
     <c:set var="somevar" scope="page" value="Hello, world!"/> 
    </c:when> 
    <c:otherwise> 
     <c:set var="somevar" scope="page" value="<fmt:message key="${page.title}">" 
    </c:otherwise> 
</c:choose 

Pero de Por supuesto, la siguiente línea no es correcta:

<c:set var="somevar" scope="page" value="<fmt:message key="${page.title}">" 

¿Cómo puedo asignar a la somevar variable la cadena resultante de una llamada a fmt: mensaje?

Respuesta

21

El fmt:message tiene un var atribuyen, así que no hace efectivamente lo que quiere.

<fmt:message key="${page.title}" var="somevar" /> 

Eso es todo. Marcar el JSTL tlddoc, puede ser útil.

+0

gracias de nuevo ... Curiosamente, hay tres respuestas y tres maneras diferentes de hacerlo :) – NoozNooz42

+0

De nada. Las otras dos respuestas son técnicamente las mismas y de hecho efectivamente lo mismo. Es solo más código y solo prueba que la presencia y el uso del attribtue 'var' en la mayoría de las etiquetas' fmt' de JSTL es relativamente desconocido;) – BalusC

+0

¿Por qué se llama 'fmt: message' si todo lo que hace es establecer una variable. ¿Está formateando o modificando la variable de alguna manera? –

8

También es posible especificar el valor para establecer el uso de los contenidos del cuerpo, en lugar de a través del atributo de valor:

<c:set var="somevar" scope="page"> 
    <fmt:message key="${page.title}"/> 
</c:set> 
5

Vas a tener que ver con:

<c:set var="title"><fmt:message key="${page.title}"></c:set> 
<c:set var="somevar" scope="page" value="${title}" /> 

Dado que no se puede utilizar <fmt:message .. /> en ese lugar es mi experiencia, tiene que ver con la anidación como usted sugirió. O vaya con @balusc sugerencia ;-)

+0

André van Toly: +1, gracias a ti también ... Fui con el atributo var más corto de la etiqueta fmt que BalusC señaló. – NoozNooz42