注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Lable

........................................

 
 
 

日志

 
 

7_Struts2 应用  

2012-01-05 11:50:43|  分类: Struts2 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

一、使用Struts2常用Ajax标签< xmlnamespace prefix ="o" ns ="urn:schemas-microsoft-com:office:office" />

    1)导入struts2-dojo-pluginjar

    2)在JSP页面中导入ajax标签

        <%@taglib prefix="sx" uri="/struts-dojo-tags"%>

    3)在JSP页面中加入head标签 <sx:head/>

 

二、Ajax常用标签

 

方法名

   

<sx:div>

创建一个div区域,可以通过Ajax向其中加载内容,以实现局部刷?

<sx:submit>

通过Ajax来更新某个元素的内容或提交表单

<sx:a>

通过Ajax来更新某个元素的内容或提交表单

<sx:tabbedPanel>

创建一个标签面板,由<s:div>来提供内容。

<sx:autocompleter>

根据用户输入提供输入建议,或者帮助用户自动完成输入

<sx:tree>

创建一个支持Ajax的树形组件(Widget

 

三、详细介绍 Ajax 标签

1<sx:div>标签属性表

属性

说明

Href

异步请求的资源地址

cssClass

指定divclass属性

updateFreq

自动更新div内容的间隔,以毫秒为单位

autoStart

页面加载后是否启动定时器,默认为true

delay

第一个异步请求开始之前等待的时间,以毫秒为单位

executeScript

执行服务器返回内容中的javascript代码,默认为false

formId

指定表单id,表单字段将被序列化并作为参数传递

indicator

当请求正在处理时具有这个id的元素将被显示

loadText

当请求正在处理时显示的文本

errorText

当请求失败时显示的文本

2<sx:submit><sx:a>标签属性表

属性

说明

href

异步请求的资源地址

targets

被更新的元素列表,以逗号分隔

formId

指定表单的id,表单字段将被序列化并作为参数传递

executeScript

执行服务器返回内容中的javaScript代码,默认为false

indicator

当请求正在处理时具有这个id的元素将被显示

loadText

当请求正在处理时显示的文本

errorText

当请求失败时显示的文本

 

3)显示为:树形控件

<sx:tree label="软件工程" templateCssPath="/struts/tree.css"

            showRootGrid="true">

            <sx:treenode label="开发工具">

                <sx:treenode label="java" id="grandchild1Id" />

                <sx:treenode label="c++" id="grandchild2Id" />

                <sx:treenode label="delphi" id="grandchild3Id" />

            </sx:treenode>

            <sx:treenode label="编程思想" id="child2Id"></sx:treenode>

            <sx:treenode label="数据结构" id="child3Id" />

            <sx:treenode label="设计模式" id="child4Id" />

            <sx:treenode label="相关框架插件" id="child5Id">

                <sx:treenode label="Dojo" id="gChild1Id" />

                <sx:treenode label="Hibernate" id="gChild2Id" />

            </sx:treenode>

        </sx:tree>

4<s:submit><sx:submit>的区别

    <s:submit>标签用来以普通方式提交表单,而<sx:submit>用于异步提交表单,还可以使用异步请求返回的数据来更新HTML元素(通常是div)的内容。

    <sx:submit>标签异步提交表单,如果该标签在表单内部,就无需使用href属性。如果该标签在表单外部,需要使用formId属性来指定表单的id,可以使用href属性指定异步请求的资源的地址,或者使用表单标签的action属性。

 

四、验证框架

1)优点:

       用户无需编码,在外部配置文件中指定某个字段的验证类型,并提供出错信息即可

       使用验证框架可以减轻开发者负担,提高开发效率

2)需要的文件

    需要指定验证失败后的返回页面,Struts2中通过“input”字符串来指定当用户输入出现验证错误时需要返回的页面。

     配置验证文件

     *采用ClassName-validation.xml或者ClassName-alias-validation.xml(其中ClassName表示Action的类名,alias表示在Struts.xml中配置的Action名字,命名规范后,struts容器会自动进行验证。)

        *efault.xml中提供的校验类型:

========================================

required           用于检查值是否为null

requiredstring     用于检查string是否为null或空,   参数trim,可在验证前对字符串执行trim操作

stringlength       检查string的长度是否在某个范围,参数trimminLengthmaxLength

int/double         检查某值是否为int/double且在某个范围,参数minmaxminInclusivemaxInclusiveminExclusivemaxExclusive

date               检查date的范围,                 参数minmax

email              检查输入是否为email格式

url                检查输入是否为url格式

conversion         检查是否将出现数据转换错误

expression/fieldexpression  检查某个布尔表达式的值是否为true,后者绑定到某个字段上参数expression

visitor            使用预定义的validators进行验证,参数context

regex 检查是否能匹配到正则表达式,                 参数regex

代码示例:

@@@ 验证必填&字符串长度 @@@@@@@@@@@@@@@@@@@@@@@

    <field name="password">

       <field-validator type="requiredstring">

            <message>密码不能为空</message>

       </field-validator>

            <field-validator type="stringlength">

            <param name="minLength">6</param>   

            <param name="maxLength">10</param> 

            <message>密码应该在 ${minLength} ${maxLength} 之间</message>

       </field-validator>

</field>

@@@ 验证数字 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

    <field name="age">

       <field-validator type="required">

           <message>年龄不能为空</message>

       </field-validator>

       <field-validator type="int">

           <param name="min">1</param>  

           <param name="max">150</param> 

           <message>年龄应该在 ${min} ${max} 之间</message>

       </field-validator>

</field>

@@@ 验证日期 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

    <field name="birthday">                类型为requiredString用于校验String类型必填

       <field-validator type="required">  类型为required用于验证String以外的类型必填

           <message>生日不能为空</message>

       </field-validator>

       <field-validator type="date">

           <param name="min">< xmlnamespace prefix ="st1" ns ="urn:schemas-microsoft-com:office:smarttags" />2001-01-01</param>  

           <param name="max">2008-08-08</param> 

           <message>生日应该在 ${min} ${max} 之间</message>

        </field-validator>

    </field>

</validators>

@@@@ 正表达式验证:@@@@@@@@@@@@@@@@@@@@@@@@@@

     <field name="bar2">

          <field-validator type="regex">

               <param name="regex">[0-9],[0-9]</param>

               <message>

                    bar2的值必须是"x, y"这样的格式 并且xy都在0 ~ 9的范围内

               </message>

     </field-validator>

@@@  URL验证 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

    <field name="url">            

        <field-validator type="required" short-circuit="true">               

            <message>你需要输入一个URL</message>  

        </field-validator>  

          

        <field-validator type="url" short-circuit="true">                

            <message>URL错误。</message>  

        </field-validator>  

    </field>

@@@ Email验证 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

   <field name="mail">  

        <field-validator type="required">  

            <message>你需要输入一个电子邮件的地址。</message>  

        </field-validator>           

        <field-validator type="email">  

            <message>非法的email格式。</message>  

        </field-validator>  

    </field>

@@@  表达式验证 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

        <validator type="expression">           

            <param name="expression">name.equals(desc)</param>  

            <message>name not the same as desc</message>  

        </validator>

   OR

        <validator type="expression>

           <param name="expression">foo gt bar</param>

           <message>foo必须大于bar.</message>

        </validator>

   OR

        <validator type="expression">

           <param name="expression">email.equals(email2)</param>

           <message>Email不等于email2</message>

        </validator>

   OR

        <validator type="expression" short-circuit="true">

           <param name="expression">email.startsWith('mark')</param>

           <message>Email没有以mark开始。</message>

        </validator>

补充::

如果既有xml校验,又有validate()校验

将先校验xml,然后进行validate()校验

然后将所有的错误添加进fielderror

五、国际化与本地化

国际化:InternationalizationI18N

使程序在不做任何修改的情况下,可以在不同国家或地区和不同语言环境下,按照当地的语言和格式习惯显示字符

本地化:LocalizationL10N

一个国际化的程序,当它运行在本地机器时,能够根据本地机器的语言和地区设置显示相应字符

       Java程序的国际化思路

       将程序中的提示信息、错误信息等放在资源文件中,为不同国家/语言编写对应资源文件

       资源文件由很多key-value对组成,key保持不变,value随国家/语言不同而不同

       这些资源文件使用共同的基名,通过在基名后面添加语言代码、国家和地区代码来进行区分

资源文件名

   

ApplicationResources_en.properties

所有英文语言的资源

ApplicationResources_zh.properties

所有的中文语言的资源

ApplicationResources_zh_CN.properties

针对中国大陆的、中文语言的资源

ApplicationResources_zh_HK.properties

针对中国香港的、中文语言的资源

ApplicationResources.properties

默认资源文件,如果请求的资源文件不存在,将调用它的资源进行显示

 

       实现国际化步骤

       struts.xml中指定资源文件的基名及存储路径

<struts>

  <constant name="struts.custom.i18n.resources" value="message"/>

  <constant name="struts.i18n.encoding" value="UTF-8"/>

  ……  

</struts>

       按照需求创建对应的三个资源文件,存放相应资源

位置

src目录下,或者直接在WEB-INF/classes目录

名称

message_en.properties

message_zh_HK.properties

message.properties

       实现JSP页面信息的国际化显示

       实现验证错误信息的国际化显示

六、资源文件的范围

       全局资源文件

       所有包的所有Action类都可以访问

       导致资源文件变得非常庞大臃肿,不便于维护 

       包范围资源文件

       对应包下创建package_language_country.properties

       处于该包及子包下的action才可以访问该文件

       Action范围资源文件

       命名格式ActionClassName_language_country.properties

       只有单个Action可以访问

 

    查找顺序:Action---package---全局

  评论这张
 
阅读(60)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017