【问题标题】:How to use getText in grid name of Struts 2 jquery grid pluing如何在Struts2 jquery网格插件的网格名称中使用getText
【发布时间】:2016-05-29 05:54:36
【问题描述】:

考虑到我有一个 ListAccountVO 对象,它必须显示在网格中

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中使用了getText

<sjg:gridColumn name="%{getText('bank.name.'+bankCode)}" .... />

它没有工作。

当我看到下面生成的代码时:

options_gridtable_colmodels_بانک شهر = {};
options_gridtable_colmodels_بانک شهر.name = "بانک شهر";
options_gridtable_colmodels_بانک شهر.jsonmap = "بانک شهر";

如您所见,javascript 变量现在包含 i18n 名称,这是不正确的。

为了解决这个问题,我使用了getText。例如:

for(List<Account>: account ){
  account.setI18nBankName(  getText('bank.name.'+ account.getBankCode() ) );
}

现在我可以使用了:

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

如您所见,我需要额外的循环和一些虚拟属性。

有没有更好的办法?!

【问题讨论】:

  • 更好的方法是将构建器应用于模型并用实际名称替换键。您必须花费大量精力编写用于遍历模型的构建器,并为提供的消息格式转换变量。
  • 您是否尝试设置label 而不是name
  • @DaveNewton,我也有同样的问题。名称对于 gridColumn 是必需的,设置标签对我没有帮助。
  • 将名称设置为不同的,例如bankName 或其他。
  • @DaveNewton 我也试过了,没用。

标签: struts2 jqgrid struts2-jquery struts2-jquery-plugin struts2-jquery-grid


【解决方案1】:

您首先将属性bankName 添加到AccountVO 类。

class AccountVO{
   String bankCode; //which could be HSB,CITY
   String bankName;
   Float amount;
   ...
}

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

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

bank.name = The {1} Bank

然后你可以使用getText()的参数。

如果您不能使用参数化消息,请保持原样,并将属性 bankName 中的消息键替换为资源包中的值。

一旦您翻译了数据模型,您就可以在网格中使用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-20
    • 2012-05-25
    • 2014-03-24
    • 1970-01-01
    相关资源
    最近更新 更多