struts2学习笔记之转换器实现语言切换

实现Struts框架下的多语言界面示例 本文还有配套的精品资源,点击获取 简介:Struts是一个基于MVC设计模式的Java Web框架,该示例演示了如何利用Struts框架实现一个简单的中英文切换功能。涉及资源文件配置、Action类、ActionForm、Struts配置文件、JSP页面、国际化标签库、会话管理和Cookie等技术要点,帮助开发者掌握Web应用的多语言支持和用户体验优化。 1. S... 阅读详情

第一步,在工程src目录下新建属性文件struts.properties,内容如下:

struts.custom.i18n.resources=globalMessages

第二步,在工程src目录下新建属性文件globalMessages_zh_CN.properties,内容如下:

HelloWorld=/u4f60/u597d

第三步,在工程src目录下新建属性文件globalMessages_en_US.properties,内容如下:

HelloWorld=Hello World

第四步,实现处理表单的Action,HelloWorld代码如下:

  1. package com.dadao.struts2;
  2. import java.util.Locale;
  3. import com.opensymphony.xwork2.ActionSupport;
  4. import com.opensymphony.xwork2.util.LocalizedTextUtil;
  5. public class HelloWorld extends ActionSupport {
  6.     private static final long serialVersionUID = 1L;
  7.     private Locale loc;
  8.     private String message;
  9.     @Override
  10.     public String execute() throws Exception {
  11.         message=LocalizedTextUtil.findDefaultText("HelloWorld",loc);
  12.         return SUCCESS;
  13.     }
  14.     public Locale getLoc() {
  15.         return loc;
  16.     }
  17.     public void setLoc(Locale loc) {
  18.         this.loc = loc;
  19.     }
  20.     public String getMessage() {
  21.         return message;
  22.     }
  23. }

第五步,实现转换器LocalConverter,代码如下:

  1. package com.dadao.struts2;
  2. import java.util.Locale;
  3. import java.util.Map;
  4. import ognl.DefaultTypeConverter;
  5. public class LocalConverter extends DefaultTypeConverter {
  6.     @Override
  7.     public Object convertValue(Map context, Object value, Class toType) {
  8.         if(toType==Locale.class){
  9.             String local=((String[])value)[0];
  10.             return new Locale(local.substring(0,2),local.substring(3));
  11.         }else if(toType==String.class){
  12.             Locale local=(Locale)value;
  13.             return local.toString();
  14.         }
  15.         return null;
  16.     }
  17.     
  18. }
  19. 第六步,在工程src目录下新建属性文件xwork-conversion.properties,内容如下:
  20. java.util.Locale=com.dadao.struts2.LocalConverter
  21. 第七步,配置struts.xml文件,代码如下:
    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <!DOCTYPE struts PUBLIC
    3.         "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    4.         "http://struts.apache.org/dtds/struts-2.0.dtd">
    5. <struts>
    6.     <package name="strutsPackage" extends="struts-default">
    7.         <action name="HelloWorld" class="com.dadao.struts2.HelloWorld">
    8.             <result>/index.jsp</result>
    9.         </action>
    10.     </package>
    11. </struts>

    第八步,完成index.jsp,代码如下:

    1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    2. <%@ taglib uri="/struts-tags" prefix="s" %>
    3. <%
    4. String path = request.getContextPath();
    5. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    6. %>
    7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    8. <html>
    9.   <head>
    10.     <base href="<%=basePath%>">
    11.     <title>My JSP 'index.jsp' starting page</title>
    12.   </head>
    13.   
    14.   <body>
    15.         <s:form action="HelloWorld" method="post">
    16.         input language:<s:textfield name="loc"></s:textfield>
    17.         <br><s:submit></s:submit>
    18.         </s:form>
    19.         <s:property value="message"/>
    20.   </body>
    21. </html>

    第九步,测试,

  22. 可在文本框中输入"en_US"和"zh_CN",并提交,查看效果

配置 SAP Fiori 服务的 ICF 节点:从 SICF 激活到访问链路打通的完整实践 在SAP Fiori项目实施中,ICF节点配置是关键前置条件却常被忽视。ICF(Internet Communication Framework)作为HTTP请求入口,需要通过SICF事务码激活相关服务节点,否则即使应用开发完善,用户仍可能遇到页面无法访问等问题。典型问题表现为:磁贴可点击但页面空白、资源加载失败等。激活路径主要涉及三组节点:bsp分支下的管理入口、ui5_ui5分支下的应用资源,以及public/bc下的公共资源。项目实施中需特别注意同名服务在不同分支下的差异化作用,确保完整链路通畅。IC 阅读详情

相关推荐

Ubuntu22.04中通过conda快速部署PyTorch开发环境(CPU/GPU双版本实战)

本文详细介绍了在Ubuntu22.04系统中,如何利用Conda高效部署PyTorch开发环境。文章分别提供了CPU与GPU双版本的实战教程,涵盖环境创建、镜像加速、版本匹配及深度验证等关键步骤,旨在帮助开发者快速搭建稳定、兼容的深度学习环境,从而专注于模型开发。

rose2的博客 556

【精华篇】第一个struts2程序(myeclipse中实现)

package actions; public class HelloWorldAction{ public String execute(){ System.out.println("I am HelloWorldAction.java"); return "success"; } } //http://localh

A_Cute_boy的博客 690

遥感大模型之Prithvi的关键技术解读

Prithvi系列模型开创了遥感领域基础模型新范式,通过海量多源时空数据(HLS和SAR)与Vision Transformer架构的深度融合,采用掩码自编码器进行自监督预训练,实现了强大的地球观测表征能力。该技术体系突破传统方法在全局建模、多模态融合和时空分析上的局限,仅需少量标注数据即可在土地分类、灾害监测等任务上取得优异表现。从初代3亿参数到Prithvi-EO-2.0的10亿参数升级,展现了模型可扩展性,为构建地球数字孪生智能基座奠定基础。

panshengwu的博客 865

struts2实现语言的随意切换

&lt;ul&gt;    &lt;li&gt;        &lt;s:url id="url" action="language"&gt;            &lt;s:param name="request_locale"&gt;en_US&lt;/s:param&gt;        &lt;/s:url&gt;        &l

zhouqiang128 178

Ubuntu20.04 安装 MATLAB R2023b 常见问题及解决方案

本文提供了Ubuntu20.04系统上安装MATLAB R2023b的完整指南,包括系统要求检查、依赖项安装、详细安装步骤及常见问题解决方案。特别针对GTK模块加载失败、OpenGL图形加速问题和中文显示乱码等常见问题提供了有效解决方法,帮助用户顺利完成安装并优化使用体验。

weixin_42619061的博客 483

java比较日期大小

import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.Date;/**** @author hp*/public class test {    public static void main(String args[]) {       int i= compare_date("199

yjdpkto的专栏 1万+

新手必看!Stata工具变量分析中的三大陷阱:如何正确解读LM统计量、CDW检验和Hansen J值

本文深度解析Stata工具变量分析中的三大核心检验:不可识别检验、弱IV检验和过度识别检验,帮助新手避开常见陷阱。详细解读LM统计量、CDW检验和Hansen J值的正确使用方法,提供实战案例和Stata操作指南,确保研究结论的可靠性。

weixin_29231027的博客 572

Java synchronized 的4种用法 (转)

  1.方法声明时使用,放在范围操作符(public等)之后,返回类型声明(void等)之前.这时,线程获得的是成员锁,即一次只能有一个线程进入该方法,其他线程要想在此时调用该方法,只能排队等候,当前线程(就是在synchronized方法内部的线程)执行完该方法后,别的线程才能进入. 例如: public synchronized void synMethod() {//方法体 } ...

frank1998819 226

STM32鱼塘水质监测系统设计与实现

物联网技术在农业领域的应用正逐步深入,其中传感器网络作为关键基础设施,通过实时数据采集与传输实现环境监测。基于STM32微控制器的嵌入式系统因其高性能和低功耗特性,成为物联网终端设备的理想选择。该系统通过DS18B20水温传感器、PH传感器和浊度传感器组成的多参数检测网络,配合4G通信模块实现水质数据的远程监控。在农业物联网场景中,这种解决方案不仅大幅降低了传统人工检测的成本,更能通过实时预警有效预防养殖损失。本文介绍的鱼塘水质监测系统正是这一技术的典型应用,展示了如何通过STM32和常见传感器构建高性价比

weixin_42173218的博客 620

国科大学习资料--数据挖掘(刘莹)--第三章习题及参考答案

国科大学习资料–数据挖掘(刘莹)–第三章习题及参考答案 国科大学习资料–数据挖掘(刘莹)–第三章习题及参考答案 国科大学习资料–数据挖掘(刘莹)–第三章习题及参考答案 第 3 章分类与回归 3.1简述决策树分类的主要步骤。 答:决策树生成的过程如下: (1)对数据源进行数据预处理, 得到训练集和测试集; (2)对训练集进行训练; (3)对初始决策树进行树剪枝; (4)由所得到的决策树提取分类规则; (5)使用测试数据集进行预测,评估决策树模型; 3.2给定决策树,选项有:(1)将决策树转换成规则,然后对结果

无名何许人的博客 3091

struts2实现选择i18n语言选择切换

【新手学习记录,仅供参考!】 1.项目准备   首先当然是我们得创建一个struts2的web项目,并且已经实现了一个简单的功能。   以下通过登录功能来举例说明。 2.指定全局国际化资源文件   在struts.xml中配置i18n资源文件。 <constant name="struts.custom.i18n.resources" value="souvenir"/...

weixin_30299539的博客 194

Python爬虫实战:深度解析B站弹幕异步采集技术与数据可视化

title=f"弹幕词云 Top 100 (BV: {bvid})", title_textstyle_opts=opts.TextStyleOpts(font_size=23).add(series_name="弹幕词云", data_pair=list(top_100_words.items()), word_size_range=[20, 100]).add_xaxis([f"{i}-{i+1}分" for i in range(len(time_distribution))])

2201_76125261的博客 640

转换器(Converter)——Struts 2.0中的魔术师

五、转换器(Converter)——Struts 2.0中的魔术师 在我已往的Struts 1.x项目经验中,有个问题不时的出现——在创建FormBean时,对于某个属性到底应该用String还是其它类型? 开发Web应用程序与开发传统桌面应用程序不同,Web应用程序实际上是分布个不同的主机(当然也可以同一个主机,不过比较少见)上的两个进程之间互交。这种互交建立在HTTP之上,它们互相传递是都

西_北 858

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

struts2的国际化学习笔记

国际化 一.国际化的目标 1. 如何配置国际化资源文件 1) Action 范围资源文件:在Action 类文件所在的路径建立       名为ActionName_language_country.properties的文件 2) 包范围资源文件: 在的根路径下建立文件       名为package_language_country.properties 的属性文件一旦建立

云水禅心 457

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

struts2学习笔记——03

使用paramsPrepareParamsStack拦截器站后的运行流程   1)paramsPrepareParamsStack和defaultStack一样都是拦截器栈,而struts-default包默认使用的是defaultStack   2)可以在struts配置文件中通过以下方式修改使用的默认拦截器栈     3)paramsPrepareParamsStack拦截器在于 :

ITzhanghao的博客 1622

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Struts2学习笔记(3)之国际化

国际化 配置国际化全局资源文件 1.        准备资源文件,资源文件命名格式:例如 中国大陆:baseName_zh_CN.properties 美国:baseName_en_US.properties 在资源文件中以键-值的形式表现出来。 2.        在struts.xml中通过struts.custom.i18n.resources常量把资源文件定义为全局资源文件:

鹏哥技术博客 620

转换器(Converter)——Struts 2.0中的魔术师(Struts 2.0系列之五)

 转换器(Converter)——Struts 2.0中的魔术师 在我已往的Struts 1.x项目经验中,有个问题不时的出现——在创建FormBean时,对于某个属性到底应该用String还是其它类型?开发Web应用程序与开发传统桌面应用程序不同,Web应用程序实际上是分布个不同的主机(当然也可以同一个主机,不过比较少见)上的两个进程之间互交。这种互交建立在HTTP之上,它们互相传递

derpvailzhangfan的专栏 637

转换器(Converter)—Struts 2.0中的魔术师

本系列文章导航为Struts 2.0做好准备Struts 2的基石——拦截器(Interceptor)常用的Struts 2.0的标志(Tag)介绍在Struts 2.0中国际化(i18n)您的应用程序转换器(Converter)—Struts 2.0中的魔术师 在Struts 2.0中实现表单数据校验(Validation) 在我已往的St

旺仔专栏 1218

转换器(Converter)Struts 2.0中

2011-04-28 13:12 转换器(Converter)——Struts 2.0中的魔术师 在我已往的Struts 1.x项目经验中,有个问题不时的出现——在创建FormBean时,对于某个属性到底应该用String还是其它类型?开发Web应用程序与开发传统桌面应用程序不同,Web应用程序实际上是分布个不同的主机(当然也可以同一个主机,不过比较少见)上的两个进程之间互交。...

梦溪笔谈 194
上一篇: JAVA代码优化小技巧
下一篇: sax解析xml文件(一)
JavaChenYang
博客等级 码龄20年 35粉丝 29原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值