本項目由繁體中文和英文兩種環境,切換語言的鏈接在頁眉的右邊,如圖:
通過點擊“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());
????????}
????}
????? */
???? 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;
????}
?????*?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方法得到。
?