2010-07-13 150 views
1

我正在将旧的Struts 1.x应用程序转换为Spring MVC,并且在一些JSP页面中,使用bean:define标记从资源包中获取字符串,然后稍后在页面中使用它:相当于Struts 1.x“bean:define”标签?

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

再后来:

title="<%=example_title%>" 

我不知道什么等价JSTL(或者如果它甚至应该是JSTL)标签应该是为了废除与Struts标签,任何人都可以提供建议?我试过玩JSTL setjsp:useBean,但要么他们是错误的路要走,要么我不正确地实施他们。

感谢您的任何建议!

回答

1

使用fmt:messagevar属性。

<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}”作为字符串值并将其用作标题。 – 2010-07-13 22:49:16

+0

然后它可能不在相同的范围内。你是否在包含页面('jsp:include')中显示它?如果是这样,请向'fmt:message'添加'scope ='request''。包含页面使用相同的请求。 – BalusC 2010-07-13 22:58:48

+0

好想法,但它是在同一页面内。以防万一我尝试使用scope = page/request/session/application获得相同的结果。标题=部分是否在标签内会有所不同?所以我试过了:”> – 2010-07-13 23:06:00

1

您可以使用$访问您定义的bean {}符号

<% 
    title = ${example_title} 
%> 

如果你想打印,您可以使用<c:out>标签

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

Here's上JSTL

的快速链接
+0

EL不能在* scriptlet *里面工作,并且你忘记了c:out中的引号。 – BalusC 2010-07-13 22:51:07