2011-01-03 2 views
4

Ich arbeite derzeit an einem Frühjahrsprojekt, und ich musste FMT-Tags innerhalb meiner JSPs verwenden. In der Tat funktionieren fmt Tags gut für mich, und es liest den richtigen Wert von messages.properties Datei.Ein Problem mit FMT-Tag

zum Beispiel:

<fmt:message key="General.Settings"/> 

in der .properties Datei:

General.Settings=Settings 

es liest es einfach perfekt.

Nun existiert das Problem, wenn das fmt-Tag in andere JSTL-Tags eingefügt wird.

Zum Beispiel:

<input name="commit" value= <fmt:message key="AllMessages.PostThisMessage"/> 
        type="submit" onclick="return isEmpty();" /> 

Innen .properties Datei:

AllMessages.PostThisMessage=Post this message 

aber es zeigt nur das Wort "Post" statt "Post Diese Nachricht"

und gleiche mit allen anderen fmt-Tags innerhalb anderer JSTL-Tags.

irgendwelche Vorschläge?

Antwort

17

Verschachteln Sie Ihre Tags nicht so, es ist verwirrend und fehleranfällig. Besser diese Art der Sache zu tun:

<fmt:message key="AllMessages.PostThisMessage" var="myMessage"/> 
<input name="commit" value="${myMessage}" type="submit" onclick="return isEmpty();" /> 

Wenn Sie wirklich diese Syntax wurden mit:

value= <fmt:message key="AllMessages.PostThisMessage"/> 

Dann ist es ein Wunder, es überhaupt gearbeitet, denn die ungültige HTML erzeugen würde.

+1

+1 Für keine Verschachtelung in JSP. Ich hasse es, wenn ich Code sehe, der Tags innerhalb anderer öffnender Tags/ungültigen XML hat. –

1

Sie die Angebote für den Wert Parameter vergessen haben:

<input name="commit" value="<fmt:message key="AllMessages.PostThisMessage"/>" type="submit" onclick="return isEmpty();" />

Aber wie bereits erwähnt, sind verschachtelte Tags schwieriger zu lesen.

1

Nicht sicher, ob es wegen meiner Version der JST-Bibliothek ist, aber ich konnte var nicht direkt auf <fmt:message /> setzen. Ich musste ein c: Set für es zu arbeiten:

<c:set var="buttonEdit"> 
    <fmt:message key="EDIT" bundle="${yourBundle}"/> 
</c:set> 
<input class="button edit" type="submit" title="your Title" value="${buttonEdit}" /> 

Ich bin neu in JSP, also hoffe ich, dass das gut ist. ;-)

1

Das Hinzufügen von einfachen Anführungszeichen um das value-Attribut wird den Trick bewirken.

<input name="commit" value='<fmt:message key="AllMessages.PostThisMessage"/>' type="submit" onclick="return isEmpty();" />