您的位置:首页 > 编程语言 > Java开发

extremecomponents使用struts2国际化信息的方法

2007-12-18 14:00 344 查看
有两种方法来实现该功能:间接法、直接法
第一种:间接法,使用el表达式与struts2的tag来写,这种方法比较繁琐,比如:
<s:set name="username" value="getText('user.username')" scope="page" />
<ec:table items="users" var="user" tableId="user" form="userForm"
          view="multiCompact"
          action="${ctx}/system/listUser.action" locale="${i18n_locale}">
  <ec:row>
    <ec:column property="username" title="${username}" />
  </ec:row>
</ec:table>

第二种:直接法,该方法是利用ec提供的扩展点来实现,这主要得益于ec的良好设计,该方法有两个步骤:
1.定义个实现org.extremecomponents.table.core.Messages结构的类

 


import java.util.ArrayList;


import java.util.List;


import java.util.Locale;




import javax.servlet.jsp.PageContext;




import org.apache.struts2.views.jsp.TagUtils;


import org.extremecomponents.table.context.Context;


import org.extremecomponents.table.core.Messages;


import org.extremecomponents.table.resource.TableResourceBundle;




import com.opensymphony.xwork2.TextProvider;


import com.opensymphony.xwork2.util.ValueStack;






public class MessagesStruts2Adapter implements Messages ...{




    private TextProvider textProvider = null;




    private Messages defaultMessages;






    public MessagesStruts2Adapter() ...{


        super();


        this.defaultMessages = new TableResourceBundle();


    }






    public void init(Context context, Locale locale) ...{


        // 先读取extremecomponents自带的国际化文件


        this.defaultMessages.init(context, locale);






        if (context.getContextObject() instanceof PageContext) ...{


            PageContext pageContext = (PageContext) context.getContextObject();


            ValueStack stack = TagUtils.getStack(pageContext);




            for (Object o : stack.getRoot()) ...{




                if (o instanceof TextProvider) ...{


                    this.textProvider = (TextProvider) o;


                    break;


                }


            }


        }


    }






    public String getMessage(String code) ...{


        return getMessage(code, null);


    }






    public String getMessage(String code, Object[] args) ...{


        // 优先查找struts2的配置文件,然后再查找ec自带的配置文件


        List<Object> theArgs = null;




        if (args != null) ...{


            theArgs = new ArrayList<Object>();




            for (Object arg : args) ...{


                theArgs.add(arg);


            }


        }




        String message = null;




        if (this.textProvider != null) ...{


            message = this.textProvider.getText(code, null, theArgs);


        }




        if (message == null) ...{


            message = defaultMessages.getMessage(code, args);


        }




        return message;


    }


}



 

2.在extremecomponents的配置文件中配置该实现类
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息