struts2 标签(5)
来源:互联网 发布:お知らせいたします 编辑:程序博客网 时间:2024/05/22 09:49
struts标签
要点集合:
- 通用标签:
- property
- set (默认为action scope 会将值放入request 和 ActionContext中 ; page,request,session,application)
- bean
- include(对中文文件有支持问题,不建议使用,如需包含,改用jsp包含)
- param
- debug
- 控制标签
- if、elseif、 else
- iterator(collections map enumeration iterator array,循环遍历)
- subset(截取集合一部分)
- UI标签
- theme(simple xhtml:默认 、 css xhtml、 ajax )
- AJAX标签
- 再补充
- $ # %的区别
- $用于 i18n 和 struts配置文件
- #取得ActionContext的值
- %将原本的文本属性解析为ognl,对于本来就是ongl的属性不起作用(参考<s:property>和<s:include>)
首先我们需要配置几个jsp页面
index.jsp:
<%-- Created by IntelliJ IDEA. User: Alex Date: 2017/5/16 Time: 23:15 To change this template use File | Settings | File Templates.--%><%@ page contentType="text/html;charset=UTF-8" language="java" %><html> <head> <title>首页</title> </head> <body> 访问属性:<br/> <a href="tags.action?username=alex&password=123">tags</a> </body></html>在此处我们传了两个参数(username和password)至struts.xml
tags.jsp:
<%-- Created by IntelliJ IDEA. User: Alex Date: 2017/5/17 Time: 5:21 To change this template use File | Settings | File Templates.--%><%@ page contentType="text/html;charset=UTF-8" language="java" %><%@taglib prefix="s" uri="/struts-tags" %><html><head> <title>Title</title></head><body><ol> 在此处写例子</ol></body></html>
在配置完成后,再看看struts.xml是如何配置的:
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"><struts> <constant name="struts.devMode" value="true" /> <package name="tags" extends="struts-default"> <action name="tags" class="tags.tagsAction"> <result>/tags.jsp</result> </action> </package></struts>
然后是action:
tagsAction:
package tags;import com.opensymphony.xwork2.ActionSupport;/** * Created by Alex on 2017/5/17. */public class tagsAction extends ActionSupport { private String username; private String password; public tagsAction(){ } @Override public String execute(){ this.addFieldError("fieldError.test","wrong!"); return SUCCESS; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; }}
注意学习方法:
尽量多查阅官方DOC文档,帮助很大。
struts标签的property标签
官方文档:
页面代码:
<li>property: <s:property value="username" /> </li> <li>property 取值为字符串: <s:property value="'username'" /> </li> <li>property 设定默认值: <s:property value="admin" default="管理员" /> </li> <li>property 设定HTML: <s:property value="'<hr/>'" escape="false" /> </li>
P.S:value的属性为object类型,都会把里面的对象解析为OGNL表达式。设定默认值意思是,当property在值栈中找不到对象,则会使用这个默认值。
struts标签的set标签
官方文档:
页面内容:
<li>set 设定adminName值(默认为request和ActionContext):<s:set var="adminName" value="username" /> var adminName = username</li> <li>set 从request里取值 :<s:property value="#request.adminName" /></li> <li>set 从ActionContext里取值 :<s:property value="#adminName" /></li> <%--<li>set 设定范围:<s:set name="adminPassword" value="password" scope="page" /> name adminPassword = password (page) </li>--%> <%--<li>set 从相应的范围取值:<%=pageContext.getAttribute("adminPassword")%></li>--%> <li>set 设定var 范围为ActionContext: <s:set name="adminPassword" value="password" var="a"/> var a = password(废弃) </li> <li>set 使用#取值: <s:property value="#a" /> </li> <li>set 设定var 范围为Session: <s:set var="adminPassword" value="password" scope="session"/> var adminPassword = password(主流) </li> <li>set 从相应的范围取值: <s:property value="#session.adminPassword" /> </li>
P.S:这里的value的属性也为object类型,官方doc文档有bug。
id与name属性已经废弃,可以不使用。 var使用时,默认为Action,但是用 scope可以指定特定的储存空间。
struts标签的bean标签
官方文档:
页面内容:
<li> bean 定义bean,并使用param来设定新的属性值: <s:bean name="tags.Dog" var="myDog"> <s:param name="name" value="'linda'"></s:param> </s:bean> </li> <li>bean 取值:<s:property value="#myDog.name" /> </li> <li>bean 查看debug:<s:debug></s:debug></li>
P.S:param子标签内部的value值我们若需要插入字符串格式,那么需要在里面加上单引号,若是需要插入OGNL表达式,则不需要单引号。
struts标签的include标签
官方文档:
页面内容:
<li> include _include1.html 包含静态英文文件: <s:include value="_include1.html" ></s:include> </li> <li> include _include1.html 包含静态中文文件: <s:include value="_include2.html" ></s:include> </li> <li> include _include1.html 包含静态中文文件,说明%的用法: <s:set var="incPage" value="'/_include2.html'" /> <s:include value="%{#incPage}" ></s:include> </li>
P.S:老版本的中文include bug已经修复,在此提到%{}的作用,即强制将字符串定义为OGNL表达式进行传递
struts标签的fieldError标签
官方文档页面内容:
<li> fieldError simple:<s:fielderror fieldName="fieldError.test" theme="simple"></s:fielderror> </li>P.S:此标签有默认样式(ul li标签)若需要去除标签样式,请转至本博客另一篇《去除struts2中s:fieldError标签中的默认样式》中查阅
控制标签
if、else if与else标签
官方文档:
if:
elseif:
页面内容:
<li> if elseif 和 else: age = <s:property value="#parameters.age" /><br/> <s:if test="#parameters.age[0] < 0">wrong age!</s:if> <s:elseif test="#parameters.age[0] <= 20" >too young!</s:elseif> <s:else>这才对嘛</s:else> <s:if test="#parameters.aaa == null">null</s:if> </li>简单easy,通俗易懂
P.S:不难发现这里多次用到#parameters.age[0] 我们可以使用set标签来优化语句
iterator标签
官方文档:
页面内容:
<li> 遍历集合:<br/> <s:iterator value="{1,2,3}"> <s:property /> | </s:iterator> </li> <li> 自定义变量:<br/> <s:iterator value="{'aaa','bbb','ccc'}" var="x" > <s:property value="#x.toUpperCase()" /> | </s:iterator> </li> <li> 使用struts:<br/> <hr/> <s:iterator value="{'aaa','bbb','ccc'}" status="status"> 元素值:<s:property/> <br/> 遍历过的元素总数:<s:property value="#status.count" /> <br/> 遍历过的元素索引:<s:property value="#status.index" /> <br/> 当前是偶数? <s:property value="#status.even"/><br/> 当前是奇数? <s:property value="#status.odd"/><br/> 是第一个元素吗? <s:property value="#status.first" /><br/> 是最后一个元素吗? <s:property value="#status.last" /> <br/> <hr/> </s:iterator> </li> <li> 遍历Map:<br/> <s:iterator value="#{1:'a',2:'b',3:'c'}"> <s:property value="key" /> | <s:property value="value"/> <br/> </s:iterator> </li>P.S:在遍历Map时,需要在value里加入#符。
subset标签
官方文档:
页面内容:
<s:subset source="myList" count="13" start="3"> <s:iterator> <s:property /> </s:iterator> </s:subset>P.S:截取部分集合内容,了解即可,过多不再阐述
UI标签
开发中不常用,因为有不方便之处,与JavaScript结合不完美
总的 来说:
- 把所有的主体定义为simple
- fieldError特殊化处理
- 自己控制其他标签的展现
阅读全文
0 0
- Struts2<5>Struts2 标签
- struts2 标签(5)
- struts2标签
- struts2标签
- struts2标签
- Struts2 标签
- struts2标签
- struts2标签
- struts2 标签
- Struts2 标签
- Struts2标签
- struts2 标签
- Struts2标签
- struts2标签
- Struts2 标签
- struts2标签
- struts2 标签
- struts2标签
- 在JavaScript中判断键盘的大写锁定键(Caps Lock)是否打开(附扫描枪相关规则)
- sublime Text安装nodejs插件遇到问题
- X
- [一起学Hive]之五-Hive的视图和分区
- List接口
- struts2 标签(5)
- php curl模拟https请求
- linux搭建django运行环境
- C语言之struts结构体
- css清除浮动的五种常用方法
- php实现webhook自动部署代码
- git强制更新,放弃本地修改
- node.js利用captchapng模块实现图片验证码
- 用Python写自动化编译工具
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
提前还款计算器等额本金
汽车计算器
房贷提前还款计算器在线计算
等额本金房贷提前还款计算器
提前还房贷计算
已经贷款
房贷还款
贷款4000元
提前还贷款计算器
怎么还房贷
怎么房贷
汽车 贷款
买房 贷款
公积金还房贷
房贷还不上
邮政储蓄个人贷款
零贷款
淘宝贷款在哪里申请
2018各大银行提前还贷违约规定
2019各大银行提前还贷违约规定
婚前买房婚后共同还贷怎么分
10万贷款3年每月还贷多少
婚前购房婚后共同还贷
还迁房可以买卖吗
还迁房和商品房的区别
户口迁走了还能迁回来吗
,这
在这
这不是斯巴达
离婚这件小事
我高三这胸漂不漂亮
这个
这个是
这个呢
你这个
在这个
这个好
把这个
这个啊
这个不错
这个月的