jsp代码
- Java code
<%@ page language="java" contentType="text/html; charset=utf-8"%><%@taglib prefix="s" uri="/struts-tags"%><script type="text/javascript">function langSelecter_onChanged(){ document.getElementById("langForm").submit();}</script><!-- 将用户Session中的“WW_TRANS_I18N_LOCALE”属性值设置成SESSION_LOCALE。 --><s:set name="SESSION_LOCALE" value="#session['WW_TRANS_I18N_LOCALE']"/><!-- 使用lee.Locales创建locales实例 --><s:bean id="locales" name="lee.Locales"> <!-- 为locales实例这种current参数值 --> <s:param name="current" value="#SESSION_LOCALE == null ? locale : #SESSION_LOCALE"/></s:bean><!-- 让用户选择语言的表单 --><form action="<s:url/>" id="langForm" style="background-color:#bbbbbb; padding-top: 4px; padding-bottom: 4px;"> <!-- 输出国际化提示 --> <s:text name="languag"/> <!-- 使用s:select标签迭代locales实例的locales Map属性 --> <s:select label="Language" list="#locales.locales" listKey="value" listValue="key" value="#SESSION_LOCALE == null ? locale : #SESSION_LOCALE" name="request_locale" id="langSelecter" onchange="langSelecter_onChanged()" theme="simple"/></form>
javaBean代码附上:
- Java code
package lee;public class Locales{ //因为本实例也需要实现国际化,所以使用current作为用户当前的Locale private Locale current; //取得用户当前Locale的setter方法 public void setCurrent(Locale cur) { this.current = cur; } //取得本系统所支持的全部语言 public Map<String, Locale> getLocales() { //将当前系统支持的全部语言保持在Map对象中 Map<String, Locale> locales = new Hashtable<String, Locale>(); ResourceBundle bundle = ResourceBundle.getBundle("messageResource" , current); //添加当前系统支持的语言,key是系统支持语言的显示名字,value是系统支持语言的Locale实例 locales.put(bundle.getString("usen"), Locale.US); locales.put(bundle.getString("zhcn"), Locale.CHINA); return locales; }}
出现的错误附上:
严重: Could not instantiate bean
java.lang.ClassNotFoundException: lee.Locales
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
at com.opensymphony.xwork2.util.ClassLoaderUtil.loadClass(ClassLoaderUtil.java:146)
at org.apache.struts2.components.Bean.start(Bean.java:128)
at org.apache.struts2.views.jsp.ComponentTagSupport.doStartTag(ComponentTagSupport.java:53)
at org.apache.jsp.selectlanguage_jsp._jspx_meth_s_005fbean_005f0(selectlanguage_jsp.java:150)
at org.apache.jsp.selectlanguage_jsp._jspService(selectlanguage_jsp.java:85)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
。。。。。。
严重: Servlet.service() for servlet jsp threw exception
tag 'select', field 'list', name 'request_locale': The requested list key '#locales.locales' could not be resolved as a collection/array/map/enumeration/iterator type. Example: people or people.{name} - [unknown location]
at org.apache.struts2.components.Component.fieldError(Component.java:237)
at org.apache.struts2.components.Component.findValue(Component.java:358)