第7章Struts2的国际化
- 格式:doc
- 大小:81.00 KB
- 文档页数:6
Struts2 复习题1.以下属于 struts2 的控制器组件是:A.ActionB.ActionFormC.ActionServletD.dispatchAction2.以下属于 struts2 的体系结构的是: (多选 )3.以下属于 struts2 配置文件中的配置元素是: (多选 ) A.<package> B.<action> C.<form-beans>D.<action-mappings>4.关于 struts1 和 struts2 对比的说法正确的是:A.struts1 要求 Action 类继承 struts1 框架中的 Action 父类, struts2 中则不一定需要继承,可以是 POJO类B.struts1 中的 Action 不是线程安全的,而struts2 中的 Action 是线程安全的C.struts1 和 struts2 中都使用ActionForm 对象封装用户的请求数据D.struts1 使用 OGNL表达式语言来支持页面效果,struts2 通过 ValueStack 技术使标签库访问值5. 以下关于A.每个ActionB.每个ActionValueStack 说法正确的是: (多选 ) 对象实例拥有一个ValueStack 对象对象实例拥有多个ValueStack 对象C.Action 中封装了需要传入下一个页面的值,这些值封装在ValueStack 对象中D.ValueStack会在请求开始时被创建,请求结束时消亡6. 关于 struts2 配置文件说法正确的是:A.必须在 WEB-INF/classes目录下B.名字必须为struts.xmlC.配置 Action 时,必须配置包信息D.使用 <forward> 元素配置转发7. 在 struts2 配置中用()元素来配置常量:A.<const>B.<constants>C.<constant>D.<constant-mapping>8.关于 struts2 包的说法正确的是:A.struts2 框架使用包来管理常量B.struts2 框架定义包时必须指定name 属性C.struts2 框架中配置包时,必须继承自struts-default 包,否则会报错D.struts2 框架中使用包来管理Action9. struts2 中获取 Servlet API 的方法正确的是: (多选 )A.使用B.使用ActionContext 对象以解耦合的方法访问S ervlet API ServletActionContext 对象以解耦合的方式访问Servlet APIC.使用D.使用ActionContext 对象以耦合的方式访问S ervlet API ServletActionContext 对象以耦合的方式访问Servlet API10.struts2 动态调用的格式为:A.ActionName?methodName.actionB.ActionName! methodName.actionC.ActionName*methodName.actionD.ActionName@mathodName.action11.如果要实现 struts2 的数据校验功能A.普通 Action 类可以实现B.继承自 Action 接口可以实现C.继承自 ActionSupport 类可以实现D.继承自 ActionValidate 类可以实现12.如果要实现自定义处理结果,需继承那个类A.DispathcerB.StrutsResultSupportC.SupportD.Action13.实现动态返回结果,在配置 <result> 元素时使用()指定视图资源A.${属性名 }B.@{属性名 }C.${'属性名 '}D.${" 属性名 "}14.用于实现国际化的 struts2 标签是:A.<s:text>B.<s:message>C.<s:textfield>D.<s:resource>15.struts2 默认的处理结果类型是:A.dispatcherB.redirectC.chainD.forward16.自定义转换器继承的抽象类是:A.ConverterB.TypeConverterC.StrutsTypeConverterD.converts17.自定义转换器的注册方式有:18.自定义拦截器类的方式有: (多选 )19.在 struts.xml 文件中,使用()元素定义拦截器A.<interceptor-ref>B.<interceptor>C.<intercep>D.<default-interceptor-ref>20.在 OGNL中?操作符的作用是:A.取出符合选择逻辑的第一个元素B.取出符合选择逻辑的最后一个元素C.取出符合选择逻辑的所有元素D.以上说法都不对21.以下属于 struts2 标签的是: (多选 )A.Ajax 标签B.数据访问标签C.logic 标签D.bean 标签22.以下哪个标签是 struts2 中的用于循环迭代 :A.<s:property>B.<s:iterator>C.<s:logic>D.<s:foreach>23. Struts2 主要核心功能是由()实现a)过滤器b)拦截器c)类型转换器d)配置文件24. Struts 中的 ActionServlet 属于 MVC 模式()a)视图b)模型c)控制器d)业务层25.Struts2 框架由()和()框架发展而来的【选择二项】a)Hibernateb)Strutsc)Springd)WebWork26.Struts2 以( B)为核心,采用()的机制处理用户请求a)Strutsb)WebWorkc)拦截器d)jar 包27. struts2 中,不属于Action 接口中定义的字符串常量的是()a)SUCCESSb)FAILUREc)ERRORd)INPUT28. struts2 在控制器类中一般需要添加相应属性的()和()【选择二项】a)setter 方法b)as 方法c)getter 方法d)is 方法29. struts2 控制器需要在()配置文件中进行配置a)web.xmlb)struts.xmlc)application.porpertiesd)webwork.xml30. 不属于 struts2 标签库的是()a)<s:textfield>b)<s:textarea>c)<s:submit>d)<select>31. 在 JSP页面中可以通过Struts2 提供的()标签来输出国际化信息a)<s:input>b)<s:messages>c)<s:submit>d)<s:text>32.资源文件的后缀名为()a)txtb)docc)propertyd)properties33. struts2 自定义类型转换器必须实现的接口是()a)Convertb)TypeConverterc)StrutsTypeConverterd)StrutsConvert34. struts2 关于注册全局类型转换器的说法正确的是()【选择二项】a)必须提供 xwork-conversion.properties 文件b)注册文件的格式为:复合类型 =对应类型转换器c)注册文件的格式为:对应类型转换器=复合类型d)以上说法都不正确35. struts2 自定义拦截器中的“return invocation.invoke ”代码表示()【选择二项】a)不执行目标 Action 的方法,直接返回b)执行目标 Action 的方法,直接返回逻辑视图名称c)在自定义拦截器中,该代码是必需的d)在自定义拦截器中,该代码是可选的36. struts2 中,以下配置文件上传拦截器只允许上传 bmp 图片文件的代码,正确的是()a)<param name= ” allowedTypes ” >image/bmp</param>b)<param name= ” allowedTypes ” >*.bmp</param>c)<param name= ” allowedTypes ” >bmp</param>d)<param name= ” allowedTypes ” >image/*bmp</param>.37.以下关于 OGNL的说法正确的是()【选择二项】a)ActionContext 是 OGNL的上下文环境b)StackContext 是 OGNL的上下文环境c)ValueStack 是 OGNL的根d)ActionContext 是 OGNL的根38. 假设在 Session 中存在名为uid 属性,通过OGNL访问该属性,正确的代码是()a)#uidb)#session.uidc)uidd)${session.uid}39. 关于“ #session.persions.{? #this.age>20} ” OGNL代码所表示的意义说法正确的是()a) 从 persons 集合中取出第一个年龄>20 的 Person 对象b) 从 persons 集合中取出所有年龄> 20 的 Person 对象子集c) 从 persons 集合中取出最后一个年龄>20 的 Person 对象d)该代码不符合 OGNL的语法40. 假设在某 JSP页面中存在” <s:property> ”代码,则以下说法正确的是()a)编译 JSP页面时会出现错误b)编译 JSP页面时不会出现错误,但页面不会显示任何内容c)该代码用于输出位于 ValueStack(值栈)栈顶的对象d)以上说法都不正确41. struts2 默认的处理结果类型是()a)dispatcherb)redirectc)chaind)以上说法都不正确42. 下列选项中,关于Struts2 配置文件说法正确的是()a)必须置于 WEB-INF/classes目录下b)必须为 Struts.xmlc)配置 Action 时必须配置包信息d)使用 <forward> 元素配置转发43. 下列选项中,关于 Struts2 的Action 说法正确的是()【选择二项】a) struts2 会为每一个请求创建一个对应的Action 实例b) struts2 在请求处理过程中,只有一个Action 实例c)struts2 通过属性来封装用户请求参数d)在 struts2 中定义的属性都用于封装用户请求参数44. struts2 中动态方法调用的格式为()a)ActionName_methodName.dob)ActionName!methodName.doc)ActionName_methodName.actiond)ActionName!methodName.action问答题: MVC是什么含义?。
Struts2学习之二--Struts2标签介绍热12已有 14625 次阅读 2009-07-12 18:53[顶]3G移动--Android开发工程师全能班(转) Struts2学习之二--Struts2标签介绍在上一篇文章《为Struts 2.0做好准备》中,我过于详细地介绍了Struts 2.0开发环境和运行环境的配置,所以,本文很少涉及的以上两方面的细节。
如果,您看完《为Struts 2.0做好准备》后,还有什么不明白,或者没法运行文中例子,请联系我。
我的E-MAIL:Max.M.Yuan@。
在介绍常用标志前,我想先从总体上,对Struts 1.x与Struts 2.0的标志库(Tag Library)作比较。
分类将标志库按功能分成HTML、Tiles、Logic和Bean等几部分严格上来说,没有分类,所有标志都在URI为“/struts-tags”命名空间下,不过,我们可以从功能上将其分为两大类:非UI标志和UI标志表达式语言(expression languages)不支持嵌入语言(EL)OGNL、JSTL、Groovy和Velcity以上表格,纯属个人总结,如有所不足或错误,请不吝指正好了,我要开始介绍“常用”(这里所谓的“常用”,是指在已往工作中使用Struts里经常用到的)的标志了。
1.非UI标志o if、elseif和else描述:执行基本的条件流转。
参数:名称必需默认类型描述备注test 是Boolean 决定标志里内容是否显示的表达式else标志没有这个参数id 否Object/String 用来标识元素的id。
在UI和表单中为HTML的id属性例子:<%@ page contentType="text/html; charset=UTF-8" %><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>Condition Flow</title></head><body><h3>Condition Flow</h3><!--这里有点小技巧:本来可以用#[0]来获得,请求中name的值。
一、1、struts2struts2是mvc设计思想的一个实现,可以将项目低耦合,提高扩展性2、struts2和struts1的区别struts2不是struts1的升级,而是继承的下xwork的血统,它吸收了struts1和webwork 的优势。
struts2的action是原型,安全的,struts2的action是单例,非安全3、步骤:1、导入包2、在web.xml文件中,加入struts2的核心拦截器3、在src下放入struts2的xml struts.xml4、urlhttp://localhost:8080/Struts2_01_HelloWorld/demo/hello.action二、1、默认值2、转发和重定向的区别转发:url显示的依然是上一个的url,共享上一次的请求重定向:url显示的是下一个的url,不共享3、urlhttp://localhost:8080/Struts2_02_Default/demo/hello.action4、路径http://localhost:8080/Struts2_02_Default/demo/a/b/c/hello.action1、原路径找不到,http://localhost:8080/Struts2_02_Default/demo/a/b/hello.action2、如果1找不到,http://localhost:8080/Struts2_02_Default/demo/a/hello.action3、如果2找不到,http://localhost:8080/Struts2_02_Default/demo/hello.action3、如果3找不到,http://localhost:8080/Struts2_02_Default/hello.action三、11、自定义action继承ActionSupport2、功能方法必须满足格式public String 名字()throws Exception{....};3、urlhttp://localhost:8080/Struts2_03_Action/demo/a.action四、1、如何给action传入参数注意:赋值的必须有封装的set方法,通过el表达式获取的时候,必须有封装的get 方法1、直接给单个参数赋值,在action里建立一个变量,名字与参数的名字一样2、为对象的某个属性赋值,在action里建立一个对象,将参数改为对象名.属性的格式五、1、转发和重定向的区别转发到下一次的时候,url依然是上一次的url,共享上一次的request重定向到下一次的时候,url是下一次的url,不共享上一次的request2、struts2的result的type转发:共享上一次action重定向:不共享上一次action1、转发到下一个jsp,html:dispatcher2、重定向到下一个jsp,html:redirect3、转发到下一个action:chain转到同一个包下的action转发到不同包下的action4、重定向到下一个action:redirectAction转到同一个包下的action转发到不同包下的action六、1、为了分模块开发,可以设置多个xmL文件。
Struts2标签使用(1):<s:textfield> ---- 文本输入框使用:<s:textfield name=”实体Bean。
属性”></s:textfield>(2):<s:textarea> ----- 文本域输入框使用:<s:textarea name=”实体Bean。
属性”></s:textarea>(3):<s:password> ----- 密码输入框使用:<s:password name=”实体Bean。
属性”></s:password>前三个基本都是一样的。
如果是要显示值的话可以这样:value = “实体Bean。
Get***()”。
(4):<s:radio list=””> ---- 单选按钮使用:<s:radio list=””>其中list 属性是必须要有的。
<1>:第一种方式:list = “#{‘male’:’男’,’female’:’女’}”<2>:第二中方式:list = “#request/session.list”。
---- 与action 结合起来了。
如果要默认选中的话后面加上value = “”.也可以通过javascript 的方式来默认选中。
(5):<s:url/> --- url连接<s:a/> --- 超链接这两个标签一般结合起来来使用。
使用:<s:url id = “id” action = “userAction”/><s:a href=”%{id}”/>(6):<s:form/> --- 获取相应form的值使用:<1>:<s:form action = “userAction”><2>:<s:url id=”userId” action = “userAction”> -- 定义了一个userId的指向userActionde 路径<s:form action=”%{userId}”>(7):<s:submit/> ---- 提交标签(8):<s:reset/> ---- 重置标签(9):<s:hidden/> ---- 隐藏域标签使用:<s:hidden name=”实体Bean。
struts2框架特征Struts2框架特征Struts2是一种流行的Java Web应用程序开发框架,其特征使其成为许多开发者的首选。
本文将介绍Struts2框架的特征,包括MVC 架构、强大的标签库、拦截器、数据验证、国际化支持以及灵活的配置等。
一、MVC架构Struts2采用了MVC(Model-View-Controller)架构,将应用程序的业务逻辑、数据模型和用户界面分离。
这种架构使开发者能够更好地组织代码、提高代码的可维护性,并能够更容易地进行代码重用和测试。
在Struts2中,Model代表数据模型,可以是POJO(Plain Old Java Object)或者是与数据库交互的实体类;View代表用户界面,通常是JSP页面;Controller则负责处理用户请求、调用业务逻辑,并将处理结果返回给用户。
二、强大的标签库Struts2提供了丰富的标签库,使开发者能够更轻松地构建用户界面。
这些标签库包括表单标签、数据展示标签、控制流标签等,可以大大简化页面开发的工作量。
例如,开发者可以使用Struts2的表单标签库来生成表单,并自动处理表单的数据绑定、验证和错误提示。
这样,开发者无需手动编写大量的HTML和JavaScript代码,能够更快速地完成表单开发。
三、拦截器Struts2的拦截器是其核心特性之一,可用于在请求到达Controller之前和之后执行一些通用的处理逻辑,如日志记录、权限验证、异常处理等。
开发者可以通过配置拦截器栈,将多个拦截器按照特定的顺序组合起来,实现复杂的请求处理流程。
拦截器的使用使得开发者能够将通用的处理逻辑从业务逻辑中分离出来,提高了代码的可维护性和重用性。
同时,Struts2还提供了许多内置的拦截器,如参数封装拦截器、文件上传拦截器等,方便开发者处理不同类型的请求。
四、数据验证在Web应用程序中,数据验证是一项重要的任务。
Struts2提供了强大的数据验证机制,开发者可以通过简单的配置实现对表单数据的验证。
Struts2(上)一、经典的MVC模式二、Struts1.x对MVC的实现三、Struts1.x的主要组件和作用组件作用ActionServlet 中央控制器Action 分控制器,调用JavaBean实现业务逻辑,Action可以分为Action、DispatchAction等不同类型ActionForm 封装参数,实现服务器验证,文件上传等Forward 转发到目的地,可以是JSP,也可以是另一个ActionStruts-config.xml 配置文件,配置有ActionForm,Action,Forward等,通过XML解析,然后使用反射技术使用该文件Struts标签库和JSTL类似,和Struts-config.xml、ActionForm、Action等对象可以紧密集成四、Struts1.x 开发实例-登录程序见案例。
五、Struts2(WebWork)的MVCStruts2的MVC架构六、Struts2的主要组件组件作用FilterDispatcher 起中央控制器作用的过滤器Action 处于Model层的Action,调用JavaBean实现业务逻辑struts.xml 核心配置文件,配置有Action、Result等result 和forward类似,转发的目的地,支持多种视图技术。
七、Struts2的实例-登录在MyEclipse环境中建立一个新的web工程,名称“Struts2Login”,存放路径“f:\Struts2Login”。
在Struts2.0.11版本中找到war包struts2-blank-2.0.11.war,解开该war包,在WEB-INF/lib 目录下复制出所有的jar包,这些jar包就是一个Struts2程序所需要的基础jar包,把它们复制到新建的web工程的WEB-INF/lib目录中。
在src目录下建立一个类,包名mypack,类名UserAction,其代码如下:package mypack;import com.opensymphony.xwork2.ActionSupport;public class UserAction extends ActionSupport {private String username;private String userpass;public String getUsername() {return username;}public void setUsername(String username) {ername = username;}public String getUserpass() {return userpass;}public void setUserpass(String userpass) {erpass = userpass;}@Overridepublic String execute() throws Exception {if ("Mike".equals(username) && "123".equals(userpass)|| "张三".equals(username) && "abc".equals(userpass))return "success";elsereturn "error";}}在src目录下建立Struts2的配置文件struts.xml,内容如下:<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""/dtds/struts-2.0.dtd"><struts><!-- 定义包管理配置的action 继承struts-default.xml中的配置 --><package name="actions" extends="struts-default"><!-- 定义Action(login.action) --><action name="login" class="erAction"><!-- 定义转发路径对应的字符串名 --><result name="success">/Success.jsp</result><result name="error">/Error.jsp</result></action></package></struts>修改web.xml,在其中加入一个过滤器,过滤/*路径。
--------------------------------------装--------------------------------------订------------------------------线----------------------------------------**学院课程考试试卷课程名称:《struts:使用struts框架开发基于MVC设计模式的WEB应用》(A)卷年级:班级:姓名:_______________ 学号:_________________ 考试(考查) 闭卷选择题(每题2分,共计100分)1.以下属于Struts1控制器的是()。
[选两项]A. ActionServletB. FilterDispatcherC. ActionD. ActionForm2.Struts1视图组件支持()。
A. JSPB. ExcelC. FreeMarker--------------------------------------装--------------------------------------订------------------------------线----------------------------------------D. Velocity3. 下列关于Struts1描述错误的是( )。
[选两项] A. Struts1对每个请求都生成一个ActionServlet 实例 B. Struts1是线程安全的C. Struts1是实现MVC 设计模式的框架D.Struts1的请求后缀名默认是“.do ”,且可以修改4. 以下选项中,需要在struts-config.xml 文件中配置的是( )。
[选三项] A. Action B. ActionForm C. ActionServlet D. ActionForward5. 以下关于struts1描述正确的是( )。
第七章Struts2的国际化教学内容:—action内validate内信息的国际化—xml文件国际化—jsp页面的国际化—国际化资源文件存活范围的问题教学目标:了解Struts2的国际化,掌握在Struts2的框架内实现校验信息,JSP页面国际化的方法。
教学重点及难点:—xml文件国际化—jsp页面的国际化—国际化资源文件存活范围的问题授课方式:讲授式课时安排理论2学时,实践2学时授课过程:应用国际化的准备工作:国际化的实现原理:程序加载相对应的已准备好的国际化资源文件来对程序进行赋值。
国际化资源文件命名规则:一般情况下,Struts2的国际化资源文件都是“.*.properties”文件,文件必须合名为“基本名称_语言代码_ 国家代码.properties”国际化资源内容的格式为”key=value”,key根据程序员自己的喜好来命名,而value值,则不同国家语言对应的该值也不同。
利用native2ascii转换信息如下:补充:native2ascii c:/message_temp.properties c:/message_temp_zh_CN.properties实现批量转换。
1.action内validate内信息的国际化案例讲解:⏹资源文件的配置— message_en_US.propertiesusername.invalid=username is invalid!⏹资源文件的配置— RegisterAction_zh_CN.propertiesusername.invalid=\u7528\u6237\u540d\u8f93\u5165\u4e0d\u6b63\u786e⏹Action的修改—RegisterAction.javaif(null==username||username.length()<=5 ||username.length()>=12){this.addActionError(this.getText("username.invalid"));}通过getText()方法得到国际化的资源信息。
✧需求扩展----运用getText()进行传参,实现动态消息。
⏹资源文件的配置— RegisterAction_en_US.propertiesusername.invalid=username "{0}" is invalid!⏹资源文件的配置— RegisterAction_zh_CN.propertiesusername.invalid=\u7528\u6237\u540d"{0}"\u8f93\u5165\u4e0d\u6b63\u786e⏹Action的修改—RegisterAction.javaif(null==username||username.length()<=5 ||username.length()>=12){ArrayList list=new ArrayList();this.getText("username.invalid",list));}注:资源文件存放路径与定义的action同2.针对用来校验的xml文件国际化✧案例讲解:⏹资源文件的配置— RegisterAction_en_US.propertiesusername.xml.invalid=username should not be blank!⏹资源文件的配置--RegisterAction_zh_CN.propertiesusername.xml.invalid=\u7528\u6237\u540d\u8f93\u5165\u4e0d\u6b63\u786e⏹修改xml文件的配置—RegisterAction-validation.xml<field name="username"><field-validator type="requiredstring"><param name="trim">true</param><message key="username.xml.invalid"></message></field-validator><field-validator type="stringlength"><param name="minLength">5</param><param name="maxLength">12</param><message>username should be between${minLength}and ${maxLength}</message></field-validator></field>注:资源文件存放路径与定义的action同3.jsp页面label的国际化✧案例讲解:⏹改写输入页面—register.jsp<s:form action="register"method="post"theme="simple"><table width="200"border="1"><tbody><tr><td><s:text name="username"></s:text></td><td><s:textfield label="username"name="username"/></td></tr> <tr><td><s:text name="password"></s:text></td><td><s:textfield label="password" key="password" /></td></tr> <tr><td><s:text name="repassword"></s:text></td><td><s:textfield label="repassword"name="repassword"/></td></tr> <tr><td><s:text name="age"></s:text></td><td><s:textfield label="age"name="age"/></td></tr><tr><td><s:textfield label="birthday"name="birthday"/></td></tr> <tr><td><s:textfield label="graduateday"name="graduateday"/></td></tr><tr><td><s:submit name="submit"/></td><td><s:reset name="reset"/></td></tr></tbody></table></s:form>⏹资源文件的配置—message_en_US.propertiesusername=username:password=password:repassword=re-password:age=age\:注:资源文件存放路径与struts.xml同⏹资源文件的配置—message_zh_CN.propertiesusername=\u7528\u6237\u540D\uFF1Apassword=\u5BC6\u7801\uFF1Arepassword=\u91CD\u590D\u5BC6\u7801\uFF1Aage=\u5E74\u9F84\uFF1A注:文件存放路径与struts.xml同⏹配置struts.xml<constant name="struts.custom.i18n.resources" value="message"></constant>✧需求扩展----运用指定属性文件的方式,进行国际化.⏹资源文件的配置— temp_en_US.propertiesusername=t-username:password=t-password:repassword=t-re-password:age=t-age:⏹资源文件的配置— temp_zh_CN.propertiesusername=t\u7528\u6237\u540D\uFF1Apassword=t\u5BC6\u7801\uFF1Arepassword=t\u91CD\u590D\u5BC6\u7801\uFF1Aage=t\u5E74\u9F84\uFF1A⏹改写输入页面—register.jsp<s:form action="register"method="post"theme="simple"> <table width="200"border="1"><tbody><tr><td><s:i18n name="temp"><s:textname="username"></s:text></s:i18n></td><td><s:textfield label="username"name="username"/></td></tr> <tr><td><s:i18n name="temp"><s:textname="password"></s:text></s:i18n></td><td><s:textfield label="password"name="password"/></td></tr> <tr><td><s:i18n name="temp"><s:textname="repassword"></s:text></s:i18n></td><td><s:textfield label="repassword"name="repassword"/></td></tr> <tr><td><s:i18n name="temp"><s:text name="age"></s:text></s:i18n></td><td><s:textfield label="age"name="age"/></td></tr><tr><td><s:textfield label="birthday"name="birthday"/></td></tr> <tr><td><s:textfield label="graduateday"name="graduateday"/></td></tr><tr><td><s:submit name="submit"/></td><td><s:reset name="reset"/></td></tr></tbody></table></s:form>4.国际化资源文件存活范围的问题包级别的资源文件:命名规则:pagkage_语种_国名.properties类级别的资源文件:类_语种_国名.properties✧案例测试:⏹资源文件的配置— package_en_US.propertiesusername.invalid=package username "{0}" is invalid!⏹资源文件的配置— package_zh_CN.propertiesusername.invalid=package\u7528\u6237\u540d"{0}"\u8f93\u5165\u4e0d \u6b63\u786e⏹资源文件的配置— RegisterAction_en_US.propertiesusername.invalid=username "{0}" is invalid!⏹资源文件的配置—RegisterAction _zh_CN.propertiesusername.invalid=\u7528\u6237\u540d"{0}"\u8f93\u5165\u4e0d\u6b63\ u786e真正执行时,采用的是更加具体的,更小化是更有效的。