2010-01-05 7 views
6

Necesito proporcionar la clave dinámica de la acción de la etiqueta de textopuntales 2 etiqueta de texto con expresión dinámica, ¿cómo?

<s:text name="<%=talkToUsInfo.messageKey%>" /> 

pero el atributo de nombre en la etiqueta de texto está declarada como falsa (no estoy seguro por qué?)

¿Cómo consigo algo parecido esto funciona sin cambiar el tld en el archivo jar?

Respuesta

3

Struts documentation dice:

su lugar, debe utilizar el método getText() que se hereda cuando su acción se extiende de Xwork ActionSupport:

<s:textfield name="lastName" label="getText('person.lastName')" /> 

Así que he usado, por ejemplo

<s:property value="getText('status' + #someObject.currentStatus)" /> 

en lugar de "s: text" y funcionó.

+0

esto no lo hace abordar la pregunta en cuestión. La pregunta era cómo crear dinámicamente tu clave i18n – Legna

5

Tome un vistazo a OGNL

Se podría tener este aspecto

<s:text name="%{talkToUsInfo.messageKey}" /> 
+0

enlace a [OGNL] (http://struts.apache.org/release/2.3.x/docs/ognl.html) sería muy útil – hidralisk

0

Prefiero usar OGNL y s:text y no hacer una llamada a getText manualmente. Por lo general define un prefijo fijo, mientras que añadir la parte dinámica a ella, por lo que algo como esto podría ser utilizado:

<s:text name="%{'student.types.'+currencyType}" /> 

La única vez que he utilizado getText dentro del s:property fue algo como esto (que necesita un poco de if/else Si desea utilizar s:text):

<s:property value="shouldCancelIt.equals(\"0\") ? 
          getText('label.yes'):getText('label.no')" /> 
Cuestiones relacionadas