2010-07-13 2 views
1

Я работаю над преобразованием старого приложения Struts 1.x в Spring MVC и на некоторых страницах JSP тег bean:define используется для получения строки из набора ресурсов и затем используется позже на странице:Эквивалент Struts 1.x "bean: define" tag?

<bean:define id="example_title"><fmt:message bundle="${example_Labels}" key="example_field"/></bean:define> 

потом:

title="<%=example_title%>" 

Я не уверен, что эквивалентно JSTL (или, если он даже должен быть JSTL) тег должен быть для того, чтобы покончить с тегом Struts, может кто-нибудь предложить предложение? Я пробовал играть с JSTL set и jsp:useBean, но либо они ошибаются, либо я реализую их ненадлежащим образом.

Спасибо за любые предложения!

ответ

1

Используйте атрибут varfmt:message.

<fmt:message bundle="${example_Labels}" key="example_field" var="example_title" /> 

Это в основном экспортирует значение, связанное с ключом в страницу области видимости переменной с именем example_title. Вы можете распечатать его в конце страницы обычный EL путь:

title="${example_title}" 

Или, если вы все еще на предварительной JSP-2.0, где EL в шаблоне текст не поддерживается (подумайте об обновлении ..), а затем использовать <c:out> для его отображения:

title="<c:out value="${example_title}" />" 
+0

Я пробовал этот путь: я не получаю никаких ошибок JSP при тестировании, но значение заголовка пустое при отображении страницы. Это почти похоже на то, что var = "example_title" не распознается. Проект пред-JSP-2.0, так как он принимает «$ {example_title}» как литеральное строковое значение и использует его как заголовок. –

+0

Тогда это, вероятно, не в том же объеме. Вы показываете его на странице включения ('jsp: include')? Если это так, добавьте запрос 'scope =" '' в сообщение 'fmt: message'. Страница включения использует тот же запрос. – BalusC

+0

Хорошая мысль, но она находится на той же странице. На всякий случай я попытался использовать scope = page/request/session/application с тем же результатом. Будет ли иметь значение, что title = часть находится в теге ? Поэтому я попытался:

1

Вы можете получить доступ к определенному бобу с помощью $ {} обозначения

<% 
    title = ${example_title} 
%> 

Если вы хотите, чтобы распечатать его, вы можете использовать <c:out> тег

<c:out value=${example_title}/> 

Here's быстрая ссылку на JSTL

+0

EL не работает внутри * скриптлет * и забыли кавычки в C: вне. – BalusC

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