2010-01-05 4 views
6

Ich brauche den Schlüssel dynamisch aus der Aktion zu dem Text-Tagstruts 2 Text-Tag mit dynamischen Ausdruck, wie?

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

aber der Name Attribut auf Text-Tag deklariert als falsch (nicht sicher, warum?)

Wie bekomme ich so etwas wie zu liefern das funktioniert, ohne die Tld in der JAR-Datei zu ändern?

Antwort

3

Struts documentation sagt aussehen könnte:

Stattdessen sollten Sie die getText() Methode verwenden, die Sie erben, wenn Ihre Aktion XWork des erstreckt ActionSupport:

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

So habe ich zB

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

anstelle von "s: text" und es hat funktioniert.

+0

dies nicht gehe auf die Frage ein. Die Frage war, wie Sie Ihren i18n-Schlüssel dynamisch erstellen können – Legna

5

einen Blick auf OGNL Nehmen

es so

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

Link zu [OGNL] (http://struts.apache.org/release/2.3.x/docs/ognl.html) wäre nützlich – hidralisk

0

Ich bevorzuge es, OGNL und s:text zu verwenden und keinen Anruf an getText manuell vorzunehmen. Sie in der Regel einen festen Präfix zu definieren, während der dynamische Teil, um es hinzuzufügen, so ein Ding wie diese verwendet werden könnten:

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

Die einzige Zeit, die ich getText innerhalb des Hauses der s:property wurde so etwas wie dies (die einige if/else braucht wenn Sie verwenden s:text) wollte:

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