簡體   English   中英

如何在Struts 2 jquery網格插入的網格名稱中使用getText

[英]How to use getText in grid name of Struts 2 jquery grid pluing

考慮到我有一個必須在網格中顯示的AccountVO對象List

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" .... />

如您所見,我需要額外的循環和一些虛擬屬性。

有沒有更好的辦法?!

您將首先向AccountVO類添加屬性bankName

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

此屬性應具有網格中使用的數據的轉換值。 您不需要在 JSP 或 JS 代碼中轉換此數據,因為此邏輯僅屬於控制器。 最初它可以包含諸如bank.name的鍵,然后將其轉換為從資源包中獲取的實際值。

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

bank.name = The {1} Bank

然后您可以使用參數getText()

如果您不能使用參數化消息,則保持原樣並用資源包中的值替換屬性bankName的消息鍵。

一旦你翻譯了一個數據模型,你就可以在網格中使用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM