2011-01-03 2 views
4

В настоящее время я работаю над проектом Spring, и мне приходилось использовать теги fmt внутри моих JSP. На самом деле теги fmt отлично работают для меня и читают правильное значение от файла messages.properties.Проблема с тегом fmt

, например:

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

в файле .properties:

General.Settings=Settings 

читает это просто отлично.

Теперь проблема возникает при установке тега fmt внутри других тегов JSTL.

Например:

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

Внутри .properties файла:

AllMessages.PostThisMessage=Post this message 

но он отображает только слово "сообщение" вместо "Создать это сообщение"

и тот же со всеми другими теги fmt внутри других тегов JSTL.

любые предложения?

ответ

17

Не гнездайте свои тэги, это запутывает и подвергает ошибкам. Лучше сделать такую ​​вещь:

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

Если вы действительно использовали этот синтаксис:

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

Тогда это чудо он работал на всех, так что будет генерировать недопустимый HTML.

+1

+1 Для не-гнездования в JSP. Я ненавижу, когда вижу код с тегами внутри других открывающих тегов/недопустимых XML. –

1

Вы забыли кавычки для параметра значения:

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

Но, как уже упоминалось, вложенные теги труднее читать.

1

Не уверен, что это из-за моей версии библиотеки JST, но я не мог установить var непосредственно на <fmt:message />. Мне пришлось создать c: набор для работы:

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

Я новичок в JSP, поэтому я надеюсь, что это хорошо. ;-)

1

Добавление одинарных кавычек вокруг атрибута value сделает трюк.

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

Смежные вопросы