如何在struts2jquerygridpluing的网格名称中使用getText

如何在struts2jquerygridpluing的网格名称中使用getText,struts2,jqgrid,struts2-jquery,struts2-jquery-plugin,struts2-jquery-grid,Struts2,Jqgrid,Struts2 Jquery,Struts2 Jquery Plugin,Struts2 Jquery Grid,假设我有一个AccountVO对象的列表,它必须显示在网格中 AccountVO{ bankCode; //which could be HSB,CITY amout; ... } 在我的资源包中 bank.name.HSB = The HSB Bank bank.name.CITY = The CITY Bank ...... bank.name.HSB = بانک اچ اس بی bank.name.CITY = بانک شهر 我尝试在gridColumn标记中

假设我有一个
AccountVO
对象的
列表
,它必须显示在网格中

AccountVO{
   bankCode; //which could be HSB,CITY
   amout;
   ...
}
在我的资源包中

bank.name.HSB = The HSB Bank
bank.name.CITY = The CITY Bank
......
bank.name.HSB = بانک اچ اس بی
bank.name.CITY = بانک شهر
我尝试在
gridColumn
标记中动态更改网格名称。所以我在
gridColumn

<sjg:gridColumn name="%{getText('bank.name.'+bankCode)}" .... />
正如您所看到的,javascript变量现在包含i18n名称,这是不正确的

为了解决这个问题,我在实际操作中使用了
getText
。例如:

for(List<Account>: account ){
  account.setI18nBankName(  getText('bank.name.'+ account.getBankCode() ) );
}
用于(列表:帐户){
account.setI18nBankName(getText('bank.name.'+account.getBankCode());
}
现在我可以使用:

<sjg:gridColumn name="i18nBankName" .... />

正如你们所看到的,我需要额外的循环和一些伪属性


还有更好的办法吗

首先,将属性
bankName
添加到
AccountVO
类中

classaccountvo{
字符串bankCode;//可以是HSB,城市
银行名称字符串;
浮动金额;
...
}

此属性应具有网格中使用的数据的转换值。您不需要在JSP或JS代码中转换此数据,因为此逻辑仅属于控制器。最初,它可以包含一个键,例如
bank.name
,然后将其转换为从资源包中获取的实际值

如果使用消息格式,可以简化冗余消息

bank.name = The {1} Bank

然后您可以使用参数
getText()

如果无法使用参数化消息,请保持原样,并用资源束中的值替换属性
bankName
中的消息键


转换数据模型后,可以在网格中使用它。

更好的方法是对模型应用生成器,并用实际名称替换键。您必须花大量的精力编写一个用于遍历模型的生成器,为提供的消息格式转换变量。您是否尝试设置
标签
而不是
名称
?@DaveNewton,我也有同样的问题。名称对于gridColumn是必需的,设置标签对我没有帮助。请将名称设置为其他名称,例如,
bankName
或其他任何名称。@DaveNewton我也尝试过,但没有帮助。
bank.name = The {1} Bank