在Struts2中,您可以使用属性文件中的值填充组件的标签。属性文件必须与将为JSP提供服务的Struts2 Action Class具有相同的名称,并且与该Action类位于同一文件夹中。
<s:textfield key="field.label.casereference" name="caseReference" />
我想用displaytag列做同样的事情。但它似乎没有用。
displaytag中的列有一个名为titleKey的属性,可以让你这样做。但它似乎没有用。
<display:table class="displaytag" id="Table2" name="getResultlistCases" clearStatus="true" requestURI="/AbsHearingSrALJ_homePage.action">
<display:column style="width:8%;" property="aljNum" titleKey="field.label.aljNumber" />
<display:column style="width:9%;" property="location" titleKey="field.label.location" />
<display:column style="width:10%;" property="caseName" titleKey="field.label.caseName" />
<display:column style="width:25%;" property="scheduledTime" titleKey="field.label.scheduledTime" />
titleKey字段未从属性文件中获取值。当我使用Struts2文本字段的键字段时,它可以工作,但不能使用列的titleKey字段用于displaytag。
有谁知道是否有可能让它发挥作用?
答案 0 :(得分:1)
Displaytag提供了一个接口I18nResourceProvider,其中有几个就绪 使用与通用框架的行为匹配的实现。 这是使用locale.provider在displaytag.properties中配置的 键。默认情况下,使用JSTL实现。
在org.displaytag.localization.I18nJstlAdapter描述中:
它将使列标记的titleKey属性与 fmt:消息的关键属性。此标记必须是a的后代 fmt:bundle标签,以便使用titleKey。
所以你应该使用以下方法(我测试过 - 它有效):
<fmt:bundle basename="action.HelloWorld">
<display:table name="test">
<display:column property="aljNum" titleKey="field.label.aljNumber" />
</display:table>
</fmt:bundle>
还要记住fmt:bundle中的“basename”是一个没有“.properties”扩展名的完全限定的资源名称。