2010-01-05 1 views
6

Ho bisogno di fornire la chiave in modo dinamico dall'azione al tag di testostruts 2 tag di testo con espressione dinamica, come?

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

ma l'attributo nome sulla tag di testo è dichiarato come falso (non so perché?)

Come faccio ad avere qualcosa di simile funziona senza cambiare il tld nel file jar?

risposta

3

Struts documentation dice:

Invece, si dovrebbe utilizzare il metodo getText() che si eredita quando la vostra azione si estende XWork di ActionSupport:

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

Così ho usato ad es.

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

anziché "s: testo" e ha funzionato.

+0

questo non lo fa indirizzare la domanda a portata di mano. La domanda era come creare la tua chiave dinamicità i18n – Legna

5

Date un'occhiata a OGNL

Potrebbe sembrare questo

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

collegamento a [OGNL] (http://struts.apache.org/release/2.3.x/docs/ognl.html) sarebbe utile – hidralisk

0

Preferisco utilizzare OGNL e s:text e non effettuare una chiamata a getText manualmente. Di solito definire un prefisso fisso mentre aggiungere la parte dinamica ad esso, in modo da qualche cosa come questo potrebbe essere utilizzato:

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

L'unica volta che ho usato getText all'interno del s:property è stato qualcosa di simile (che ha bisogno di un po 'di if/else se si voleva utilizzare s:text):

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