如何使用Struts2属性文件条目填充displaytag列标题?

时间:2015-03-12 21:49:55

标签: struts2 displaytag properties-file

在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。

有谁知道是否有可能让它发挥作用?

1 个答案:

答案 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”扩展名的完全限定的资源名称。