本項目由繁體中文和英文兩種環境,切換語言的鏈接在頁眉的右邊,如圖:

通過點擊“English”,可以將整個系統的語言環境轉換為“英文”,下面是從“英文”環境轉為“繁體中文”環境后的頁面情況:

標簽已經轉換為“繁體”環境,但是下拉列表中的內容還是“英文”的內容,產生這個Bug的原因是由于整個下拉的List存儲在生命期為 Session 的 DBean 中,而此所有 List 的初始化的代碼都在 DBean 的構造函數中,這樣,即使改變語言,由于DBean的生命期未結束,List的內容不會更根據語言環境而改變。
????
/**
MaintainClaimNoticeDBean
?????
*/
????
public
?MaintainClaimNoticeDBean()?{
????????
this
.queryVO?
=
?
new
?QueryClaimNoticeDataVO();
????????
this
.nonGohVO?
=
?
new
?MaintainClaimNoticeDataVO();
????????
this
.gohVO?
=
?
new
?MaintainClaimNoticeGohDataVO();
????????
this
.cnService?
=
?
new
?MaintainClaimNoticeDataService();
????????
this
.msgService?
=
?
new
?MessageService();
????????
this
.gohService?
=
?
new
?MaintainClaimNoticeGohDataService();
????????CodeTableService?codeTableService?
=
?
new
?CodeTableService();
????????
try
?{
????????????
this
.selectItemCompanyFlag?
=
?Tools
????????????????????.ConverterListtoSelectItem(codeTableService
????????????????????????????.getSelectOneListbox(
????????????????????????????????????GroupCodeConstant.COMPANY_FLAG,?getLocale()));
????????????
this
.selectItemHandleStatus?
=
?Tools
????????????????????.ConverterListtoSelectItem(codeTableService
????????????????????????????.getSelectOneListbox(
????????????????????????????????????GroupCodeConstant.HANDLE_STATUS,
????????????????????????????????????getLocale()));
????????????
this
.selectItemClaimNoticeClass?
=
?Tools
????????????????????.ConverterListtoSelectItem(codeTableService
????????????????????????????.getSelectOneListbox(
????????????????????????????????????GroupCodeConstant.CLAIMNOTICE_CLASS,
????????????????????????????????????getLocale()));
????????????
this
.selectItemPolicyStatus?
=
?Tools
????????????????????.ConverterListtoSelectItem(codeTableService
????????????????????????????.getSelectOneListbox(
????????????????????????????????????GroupCodeConstant.POLICY_STATUS,
????????????????????????????????????getLocale()));
????????????
this
.selectItemReCompanyCode?
=
?Tools
????????????????????.ConverterListtoSelectItem(codeTableService
????????????????????????????.getSelectOneListbox(
????????????????????????????????????GroupCodeConstant.RE_COMPANY_CODE,
????????????????????????????????????getLocale()));
????????????
this
.selectItemReinsuranceLevel?
=
?Tools
????????????????????.ConverterListtoSelectItem(codeTableService
????????????????????????????.getSelectOneListbox(
????????????????????????????????????GroupCodeConstant.REINSURANCE_LEVEL,
????????????????????????????????????getLocale()));
????????}?
catch
?(BusiException?e)?{
????????????
this
.setDisplayMsg(e.getExceptionMessage());
????????}
????}
修改辦法:
將所有下拉列表的初始化代碼放在第一個下拉列表的get方法中:這里CompanyFlag是第一下拉列表:
????
/**
?????*?Method?getSelectItemCompanyFlag.
?????*?
?????*?
@return
?SelectItem[]
?????
*/
????
public
?SelectItem[]?getSelectItemCompanyFlag()?{
????????
this
.reset();
????????CodeTableService?codeTableService?
=
?
new
?CodeTableService();
????????
try
?{
????????????
this
.selectItemCompanyFlag?
=
?Tools
????????????????????.ConverterListtoSelectItem(codeTableService
????????????????????????????.getSelectOneListbox(
????????????????????????????????????GroupCodeConstant.COMPANY_FLAG,?getLocale()));
????????????
this
.selectItemHandleStatus?
=
?Tools
????????????????????.ConverterListtoSelectItem(codeTableService
????????????????????????????.getSelectOneListbox(
????????????????????????????????????GroupCodeConstant.HANDLE_STATUS,
????????????????????????????????????getLocale()));
????????????
this
.selectItemClaimNoticeClass?
=
?Tools
????????????????????.ConverterListtoSelectItem(codeTableService
????????????????????????????.getSelectOneListbox(
????????????????????????????????????GroupCodeConstant.CLAIMNOTICE_CLASS,
????????????????????????????????????getLocale()));
????????????
this
.selectItemPolicyStatus?
=
?Tools
????????????????????.ConverterListtoSelectItem(codeTableService
????????????????????????????.getSelectOneListbox(
????????????????????????????????????GroupCodeConstant.POLICY_STATUS,
????????????????????????????????????getLocale()));
????????????
this
.selectItemReCompanyCode?
=
?Tools
????????????????????.ConverterListtoSelectItem(codeTableService
????????????????????????????.getSelectOneListbox(
????????????????????????????????????GroupCodeConstant.RE_COMPANY_CODE,
????????????????????????????????????getLocale()));
????????????
this
.selectItemReinsuranceLevel?
=
?Tools
????????????????????.ConverterListtoSelectItem(codeTableService
????????????????????????????.getSelectOneListbox(
????????????????????????????????????GroupCodeConstant.REINSURANCE_LEVEL,
????????????????????????????????????getLocale()));
????????}?
catch
?(BusiException?e)?{
????????????
this
.setDisplayMsg(e.getExceptionMessage());
????????}
????????
return
?
this
.selectItemCompanyFlag;
????}
這樣,每次進入頁面,第一個標簽中的下拉列表框的內容都由JSF通過該標簽的getter方法得到。
?
posted on 2007-03-08 10:41
CoderDream 閱讀(415)
評論(0) 編輯 收藏