struts对国际化的支持

本文详细介绍了如何在Struts框架中进行国际化配置,包括添加国际化资源文件并将其转换为Unicode编码,以及如何在JSP页面中使用bean:message标签读取国际化消息文本。同时,阐述了如何利用Struts将Locale信息保存到session中,实现语言自动切换。最后,讲解了创建、传递和显示国际化消息文本的方法,并提供了示例代码。
1、struts国际化配置
*在struts-config.xml文件中加入
<message-resources parameter="MessageResources" />


2、提供国际化资源文件
* MessageResources.properties
* MessageResources_zh_CN.properties
login.form.field.Password=\u5BC6\u7801
login.form.button.login=\u767B\u5F55
login.form.field.username=\u7528\u6237

* MessageResources_en_US.properties
中文需要转换成Unicode编码(native2ascii.exe)

3.在jsp中采用<bean:message>读取国际化消息文本
<form action="login.do" method="post">
<bean:message key="login.form.field.username"/>:<input type="text" name="username"><br>
<bean:message key="login.form.field.Password"/>:<input type="password" name="password" ><br>
<input type="submit" value="<bean:message key="login.form.button.login"/>">
</form>


4.利用struts默认将Locale放到session中的特性,我们可以完成语言的自动切换
*ChangeLanguageAction.java
//.......................................
String lang = request.getParameter("lang");
Locale locale = Locale.getDefault();
if("zh".equals(lang)){
locale = new Locale("zh", "CN");
}else if("en".equals(lang)){
locale = new Locale("en", "US");
}
//将Locale设置到session中
// request.getSession().setAttribute(Globals.LOCALE_KEY, locale);
this.setLocale(request, locale);
return mapping.findForward("index");
//.................................

5.动态消息国际化的主要三个步骤:
*创建国际化消息文本
*传递国际化消息文本
*显示国际化消息文本

如何创建国际化消息文本
理解ActionMessage和ActionMessages连个对象的区别

如何传递国际化消息文本
调用savaMessage()传递提示消息,调用savaError()传递错误消息



import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;

/**
* 登录Action
* 负责取得表单数据,调用业务逻辑,返回转向信息
* @author Administrator
*
*/
public class LoginAction extends Action {

@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
// LoginActionForm laf = (LoginActionForm)form;
// String username = laf.getUsername();
// String password = laf.getPassword();
// if("admin".equals(username) && "admin".equals(password)){
// //登录成功
// return mapping.findForward("success");
// }else{
// //登录失败
// return mapping.findForward("error");
// }

LoginActionForm laf = (LoginActionForm)form;
String username = laf.getUsername();
String password = laf.getPassword();
UserManager userManager = new UserManager();
ActionMessages messages = new ActionMessages();
try{
userManager.login(username, password);
//创建国际化消息
ActionMessage message = new ActionMessage("login.success",username);
messages.add("login_success_1",message);
//传递国际化消息
this.saveMessages(request, messages);
return mapping.findForward("success");
}catch(UserNotFoundException e){
e.printStackTrace();
//创建国际化消息
ActionMessage error = new ActionMessage("login.user.not.found", username);
messages.add("error_1",error);
// 传递国际化消息
this.saveErrors(request, messages);
}catch(PasswordErrorException e){
e.printStackTrace();
ActionMessage error = new ActionMessage("login.password.error");
messages.add("error_2",error);
this.saveErrors(request, messages);
}

return mapping.findForward("error");

}

}



如何显示国际化消息文本
通过<html:messages>显示提示消息和错误消息
通过<html:errors>显示错误消息(只能显示错误消息)
*如果需要特效则在国际化资源文件中加入

errors.header=<UL>
errors.prefix=<font color=red><LI>
errors.suffix=</LI></font>
【电动汽车充电站有序充电调度的分散式优化】基于蒙特卡诺和拉格朗日的电动汽车优化调度(分时电价调度)(Matlab代码实现)内容概要:本文介绍了基于蒙特卡洛和拉格朗日方法的电动汽车充电站有序充电调度优化方案,重点在于采用分散式优化策略应对分时电价机制下的充电需求管理。通过构建数学模型,结合不确定性因素如用户充电行为和电网负荷波动,利用蒙特卡洛模拟生成大量场景,并运用拉格朗日松弛法对复杂问题进行分解求解,从而实现全局最优或近似最优的充电调度计划。该方法有效降低了电网峰值负荷压力,提升了充电站运营效率与经济效益,同时兼顾用户充电便利性。 适合人群:具备一定电力系统、优化算法和Matlab编程基础的高校研究生、科研人员及从事智能电网、电动汽车相关领域的工程技术人员。 使用场景及目标:①应用于电动汽车充电站的日常运营管理,优化充电负荷分布;②服务于城市智能交通系统规划,提升电网与交通系统的协同水平;③作为学术研究案例,用于验证分散式优化算法在复杂能源系统中的有效性。 阅读建议:建议读者结合Matlab代码实现部分,深入理解蒙特卡洛模拟与拉格朗日松弛法的具体实施步骤,重点关注场景生成、约束处理与迭代收敛过程,以便在实际项目中灵活应用与改进。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值