Struts2标签库

来源:互联网 发布:禾川plc用什么编程软件 编辑:程序博客网 时间:2024/06/05 05:16



1.引入标签库
<%@ taglib prefix="s" uri="/struts-tags" %>
2.主要分两类
->通用标签
---->控制标签:用于在呈现页面时控制执行流程
---->数据标签:用于访问值栈或其它作用或中的数据
->UI标签
3.数据标签
1)property
  用于执行OGNL表达式,主要用于输出值栈中的对象的属性(property)值
 value:指定要输出的对象属性,如果没有指定value属性,那么默认输出顶栈对象
 default:如果value属性是null,内里输出default指定的字符串
 escape:当输出html内容的时候,是否转义为字符实体,默认为true,自动转义
例:
<s:property value="username" default="游客" escape="true" />
2)set
set标签将一个值存入ActionContext的ContextMap,或赋值给指定范围内的变量
name:变量名
value:将value的值赋给变量,如果只是字符串,那么必须加单引号
scope:指定变量存储的范围
注:page,request,session,application,action(value的值同时被保存到request和actionComtext中)
<s:set name="A" value="'name'" scope="session"/>
<s:property value="#session.A"/>
3)push
push把一个值压入值栈的栈顶,而不是ContextMap,标签结束后,值栈中的对象将被删除
注意:push标签后,元素就会弹出
<s:push value="#session.user">
  <s:property value="name"/>
  <s:property value="sex"/>
</s:push>
4)bean
bean标签用于实例化一个Javabean对象,指定id属性,将对象放入到OGNLContext中
<s:bean name="entity.Users" id="USER">
  <s:param name="name" value="'zhangsan'"></s:param>
  <s:param name="sex">女</s:param>
</s:bean>
<s:property value="#USER.name"/>
<s:property value="#USER.sex"/>
5)action
action标签允许在JSP页面中直接调用action
executeResult:是否执行Action对应的result,默认为false
id:Action的引用名
<s:action name="login" namespace="/" executeResult="true" id="t">
 <s:param name="name">姓名</s:param>
 <s:param name="pwd">密码</s:param>
</s:action>
${t.name }
6)date
date标签用于格式化输出日期值,也可以输出当前日期与指定日期之间的时差
 <s:date name="#session.date" format="yyyy年MM月dd hh:mm:ss" id="d1"  nice="true"/>
 ${d1 }
name:要格式化的日期,必须为java.util.Date的实例
format:格式化的样式
id:如果指定了,格式化后的日期将不会输出,date标签结束后,可以通过该属性的值来引用
nice:指定是否输出当前日期与制定日期之间的时差,true时输出时差
4.控制标签(用于在呈现结果页面时控制程序的执行流程,根据程序执行的状态输出不同的结果)
1)if/elseif/else
if/elseif/else标签类似于Java中的if/elseif/else语句,根据条件 (boolean表达式)来选择执行或跳过标签体内容
<s:set name="score" value="#parameters.score[0]"></s:set>
<s:if test="#score<60">
  不及格
</s:if>
<s:elseif test="#score>=60&&#score<85">
  及格
</s:elseif>
<s:else>
  优秀
</s:else>
2)iterator
iterator在迭代过程中,会把迭代的每一个对象暂时压入值栈
在标签内部可以直接访问对象的属性和方法
每次标签体执行完之后,位于栈顶的对象就会被删除
例:
<s:iterator value="{'lisa','jack','rose','linda'}" status="st">
  <s:property/>
</s:iterator>
status有以下属性:
count:当前迭代元素的总数
index:当前迭代元素的索引
even:判断当前迭代元素是否是偶数
odd:判断当前迭代元素是否是奇数
first:判断是否是第一个元素
last:判断是否是最后一个元素
3)subset
subset标签用于截取一个迭代的子集
<s:subset source="#session.l" start="2" count="1">
  <s:iterator>
  <s:property/>|
  </s:iterator>
</s:subset>
source:指定迭代的集合
start:开始的索引,从0开始计算
count:截取的数量
4)append(用于将多个集合串联合并)
<%
    List list=new ArrayList();
    list.add("A1"); list.add("A2"); list.add("A3");
 List list2=new ArrayList();
    list2.add("B1"); list2.add("B2"); list2.add("B3");
 request.setAttribute("list", list);
    request.setAttribute("list2", list2);
%>
<s:append id="newList">
<s:param value="%{#request.list }"></s:param>
<s:param value="%{#request.list2 }"></s:param>
</s:append>
<s:iterator value="#newList">
<s:property/> <br/>
</s:iterator>
5)merge(用于将多个集合交替合并)
 <%
    List list=new ArrayList();
    list.add("A1"); list.add("A2"); list.add("A3");
 List list2=new ArrayList();
    list2.add("B1"); list2.add("B2"); list2.add("B3");
 request.setAttribute("list", list);
    request.setAttribute("list2", list2);
%>
<s:merge id="newList">
<s:param value="%{#request.list }"></s:param>
<s:param value="%{#request.list2 }"></s:param>
</s:merge>
<s:iterator value="#newList">
<s:property/> <br/>
</s:iterator>
6)generator(能够将字符串按分隔符转换为集合)
generator标签可以将分割后返回的集合压入值栈栈顶,并在标签结束后自动删除。
<ul>
    <s:generator separator="," val="'A,B,C,D,E'" count="3" >
       <s:iterator>
         <li><s:property/></li>
       </s:iterator>
    </s:generator>
</ul>
5.UI标签
1)form标签
<s:form action="register" namespace="/" method="post">


</s:form>
2)表单标签textfield、password、textarea
textfiled标签输出一个HTML单行文本控件
<s:textfield name="name" label="用户名"></s:textfield>
name:表单名字,与Action的属性对应
lable:与表单元素关联的label
labelposition:left,top
password标签输出一个HTML密码框
textarea输出一个文本域
3)表单标签select
select标签,输出一个HTML列表框
list:要迭代的集合
name:表单下拉列表的名字
value:默认选中的值
headerkey:下拉列表header的值
headervalue:下拉列表header的文本内容


<s:select list="#{1:'中国',2:'日本',3:'韩国'}" name="country" label="国籍" value="'2'" headerKey="0" headerValue="请选择您的国籍"></s:select>
4)表单标签radio
radio标签,输出一组HTML单选按钮
list:要迭代的集合。
name:表单下拉列表的名字
value:默认选中的值
listKey:指定使用集合中对象的哪个一个属性做为选项的value
listvalue:指定使用集合中对象的哪一个属性作为选项的内容


<s:radio list="#{1:'男',0:'女'}" label="性别" name="sex" value="'1'"></s:radio>
5)表单标签checkbox
checkbox标签,输出一个HTML复选框
fieldValue:复选框选中时,提交的值


<s:checkbox name="isInfo" label="是否显示个人信息" fieldValue="ok"></s:checkbox>
6)表单标签checkboxlist
checkboxlist标签,输出一组HTML复选框
list:要迭代的集合
listKey:指定使用集合中对象的哪个一个属性做为选项的value
listvalue:指定使用集合中对象的哪一个属性作为选项的内容
value:默认选中的值


<s:checkboxlist name="interest" value="#{1,3}" list="#{1:'乒乓球',2:'篮球',3:'足球'}"  label="兴趣爱好"></s:checkboxlist>
7)表单标签hidden、reset
hidden标签,输出一个HTML隐藏表单元素
name:表单元素名
value:元素的值
<s:hidden name="id" value="1"></s:hidden>


rest标签,输出一个HTML重置按钮
<s:reset value="重置" ></s:reset>
8)表单标签submit
submit标签,输出一个HTML提交按钮。
type:可选值,submit(提交按钮),img(图片按钮),button(普通按钮)
value:按钮显示的文本
name:支持以下前缀,
method:(提交到form对应的Action的指定方法)
acton:(提交到另外的Action,可使用动态方法如action:vister!visterShow)
Struts 2.3.15.3后必须通过struts.mapper.action.prefix.enabled=true开启action前缀提交;struts.mapper.action.prefix.crossNamespaces=true可开启跨命名空间提交。
<s:form action="user" namespace="/" method="post">
<s:submit type="submit" value="登录" name="method:dologin"></s:submit>
<s:submit type="img" value="游客" name="action:vister"></s:submit>
</s:form>
9)非表单标签a、url
a标签:输出超链
<s:a  href="go.jsp">goto</s:a>
<s:a  action="hello">goto</s:a>


url标签:输出Action的访问路径
<s:url action='login'/>


6.信息标签
actionerror标签:输出actionErros保存的错误信息
actionmessage标签:输出actionMessage保存的信息
fielderror标签:输出Action的字段错误消息


//添加Action错误信息
addActionError("Action Error message1");
addActionError("Action Error message2");
//添加Action一般信息
addActionMessage("Action Message1");
addActionMessage("Action Message2");
//添加字段消息
addFieldError("f1", "field1 error");
addFieldError("f2", "field2 error");


<s:actionerror/>
<s:actionmessage/>


<s:fielderror></s:fielderror>


<s:fielderror>
<s:param>f1</s:param>
</s:fielderror>
*使用javascript输出消息信息
<s:if test="hasActionMessages()">
      <s:iterator value="actionMessages">
              <script language="javascript">
                     alert('<s:property/>');
              </script>
        </s:iterator>
</s:if>


*使用EL获取字段错误
将获得的字段错误信息可以显示在任意位置
${fieldErrors['age'][0] }








6.Struts2标签类型
**Struts2标签的属性具有类型,主要可以分为字符串类型和非字符串类型
**字符串类型的属性:指定的值都会被当做普通的字符串常量,要访问动态数据,必须使用%{…}这样的语法,加了%{…}之后会被当做OGNL表达式解析。
**非字符串类型的属性:无论在给出 value 值时有没有使用 %{}, Struts 都会对它进行 OGNL求值,如果想定义为字符串常量, 必须把它用单引号括起来。
注意:有些标签为纯字符串属性,如property标签的default属性
1)param标签的value属性是一个字符串类型的属性
<s:param name="uname" value="username" >
代表将username作为参数值。
<s:param name="uname" value="%{username}" >
代表将username作为表达式解析后的结果参数值。








struts2国际化:


1、在src包下创建资源文件
1.1创建struts.properties配置文件内容如下:
struts.i18n.encoding=UTF-8
struts.custom.i18n.resources=ApplicationResources
1.2创建默认ApplicationResources.properties配置文件内容如下:
login.msg.uname  = user required!
login.msg.upwd   = passsword required!
login.title      = manager system
login.user.on    = login
login.user.reset = reset
login.user.uname = user
login.user.upwd  = password
1.3创建ApplicationResources_zh_CN.properties中文配置文件:
login.msg.uname  = \u7528\u6237\u540D\u4E0D\u80FD\u4E3A\u7A7A
login.msg.upwd   = \u5BC6\u7801\u4E0D\u80FD\u4E3A\u7A7A
login.title      = \u7BA1\u7406\u5E73\u53F0
login.user.on    = \u767B\u5F55
login.user.reset = \u91CD\u7F6E
login.user.uname = \u7528\u6237\u540D
login.user.upwd  = \u5BC6\u7801
1.4创建英文ApplicationResources_en.properties配置文件:
login.msg.uname  = user required!
login.msg.upwd   = passsword required!
login.title      = manager system
login.user.on    = login
login.user.reset = reset
login.user.uname = user
login.user.upwd  = password


2、在登录页面使用
2.1在页面内直接用:<s:text name="login.title">
2.2在文本框内使用key属性:<s:password name="upwd" key="login.user.upwd"></s:password>
2.3在按钮也是使用key属性:<s:submit key="login.user.on" theme="simple"></s:submit>


3、在action里面使用
if(uname.equals("")){
addFieldError("uname",getText("login.msg.uname"));
}
0 0
原创粉丝点击