数据标签主要用于提供各种数据访问相关的功能,比如显示一个Action里的属性,以及生成的国际化输出等。
Struts2数据标签主要分为以下几种:
property:用于生成输出某个值 值包:valueStack、StackContext和ActionContext中的值
bean:该标签用于创建一个JavaBean实例,如果指定了id属性,则可以将创建的Javabean实例存放入Stack Context中。
set:用于设置一个新变量,并将该新变量放入指定的范围内
url:用于生成一个URL地址
text:用于输出国际化信息
param:用于设置一个参数,通用用做bean标签 URL标签的子标签
date:用于输出一个日期
debug:用于在页面上生成一个连接,当点击链接时,可以看到ValueStack 和 Stack Context中的内容
include:用于在JSP页面中包含其他的jsp资源等
i18n:用于指定国际化资源文件的baseName
action:该标签用于在JSP页面直接调用一个Action,通过指定executeResult参数,还可以将该Action的处理结果包含到
本页面中
push:用于将某个值放入ValueStack的栈顶。
以下是部分标签的案例供学员参考:
- /**首先创建一个JavaBean供bean标签使用*/
- packageedu.bean;
- importjava.io.Serializable;
- publicclassAdminimplementsSerializable{
- /**
- *
- */
- privatestaticfinallongserialVersionUID=1L;
- privateintid;
- privateStringname;
- privateStringpass;
- publicAdmin(){
- }
- publicAdmin(intid,Stringname,Stringpass){
- this.id=id;
- this.pass=pass;
- this.name=name;
- }
- publicintgetId(){
- returnid;
- }
- publicvoidsetId(intid){
- this.id=id;
- }
- publicStringgetName(){
- returnname;
- }
- publicvoidsetName(Stringname){
- this.name=name;
- }
- publicStringgetPass(){
- returnpass;
- }
- publicvoidsetPass(Stringpass){
- this.pass=pass;
- }
- publicvoidstudy(){
- System.out.println("管理员正在学习管理的方式.....");
- }
- }
- /**以下是视图层中的案例原码供学员参考*/
- <body>
- <h1>
- 数据标签案例
- </h1>
- <!--bean用于创建一个JavaBean实例
- name属性:必填属性该属性指定要实例化的JavaBean的实现类。
- id属性:该属性是一个可选属性.如果指定了该属性,则该JavaBean实例会被存入StackContext中,从
- 而允许直接通过id属性来访问该JavaBean实例
- -->
- <s:beanname="edu.bean.Admin"id="p">
- <!--使用param标签为Java实例传入参数name是属性名称value是属性值-->
- <s:paramname="id"value="12"></s:param>
- <s:paramname="name"value="'redarmy'"></s:param>
- <s:paramname="pass"value="'123'"></s:param>
- <!--备注:在value属性值中我们使用了"''"既外层是""内层是''为什么呢?
- 其实暗藏玄机,如果没有加''那么它redarmy当成变量来取值,而不是看成字符串。
- 所以要想看成字符串必须加单引号,而对于整数无此要求
- -->
- </s:bean>
- <!--在使用bean标签的时候要获取p的实例加#前缀-->
- <s:setname="entity"value="#p"></s:set>
- <s:propertyvalue="#entity.name"/>
- <br/>
- <!--在这里你明白为什么加''吗?如果还是不明白请参考上面-->
- <s:setname="username"value="'redarmyChen'"scope="session"></s:set>
- <s:propertyvalue="#session['username']"/>
- <br/>
- <!--URL标签中的method方法指明的是Action中的处理方法-->
- <s:urlaction="./adminLogin.action"namespace="/"id="login">
- <s:paramname="name"value="'redarmy'"></s:param>
- <s:paramname="pass"value="'123'"></s:param>
- </s:url>
- <s:ahref="%{login}">用户登录</s:a>
- <br/>
- <!--用于输出日期的标签-->
- <%
- Datenowdt=newDate(300000000);
- //将nowdt存入到PageContext里的属性
- pageContext.setAttribute("nowdt",nowdt);
- %>
- <!--默认的格式:YYYY-MM-DDHH:mm:ss-->
- <s:datename="#attr.nowdt"/>
- <br/>
- <!--format:是一个可选属性如果指明该属性则就按照指明的格式输出-->
- <s:datename="#attr.nowdt"format="dd/MM/yyyy"/>
- <br/>
- <!--nice:是一个可选属性,true|false它用于指定是否输出指定日期和当前日期之间时差-->
- <br/>
- <s:datename="#attr.nowdt"nice="true"></s:date>
- <!--怎么输出国际化信息呢可以采用如下方式-->
- <s:propertyvalue="%{getText('helloworld')}"/>
- <s:textname="helloworld"></s:text>
- <!--生成一个debug的链接链接中显示ValueStackStackContext中的所有的值信息-->
- <s:debug></s:debug>
- </body>
- /**以下是struts.xml文件*/
- <?xmlversion="1.0"encoding="UTF-8"?>
- <!DOCTYPEstrutsPUBLIC"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.1//EN"
- "http://struts.apache.org/dtds/struts-2.1.dtd">
- <struts>
- <!--国际化资源文件的声明-->
- <constantname="struts.custom.i18n.resources"value="globalMessages"></constant>
- <packagename="sts"extends="struts-default"namespace="/">
- <!--全局的结果-->
- <global-results>
- <resultname="input">/admin/error.jsp</result>
- </global-results>
- <!--action处理-->
- <actionname="adminLogin"class="edu.saction.AdminAction"
- method="login">
- <result>/admin/main.jsp</result>
- </action>
- </package>
- </struts>
/**以下是globalMessages_zh_CN.properties文件内容*/
helloworld=/u6B22/u8FCE.....
希望以上内容对学员学习struts2的数据标签有所帮助,以上内容属个人上课记录,如要转发请注明出处。愿你有所收获!