struts基础04_struts2标签
1.Struts 2支持以下几种表达式语言:
OGNL(Object-Graph Navigation Language),可以方便地操作对象属性的开源表达式语言(默认支持);
JSTL(JSP Standard Tag Library),JSP 2.0集成的标准的表达式语言;
Groovy,基于Java平台的动态语言,它具有时下比较流行的动态语言(如Python、Ruby和Smarttalk等)的一些起特性;
Velocity,严格来说不是表达式语言,它是一种基于Java的模板匹配引擎;
(1)OGNL在Struts2中的图示
非根对象取值示例
值栈的使用
Struts2中值栈对象是OGNL的根,不需使用“#”
Action对象被自动加入值栈中
访问根对象不需加任何特殊符号即可访问
<s:textfield name="userName" label="uerName" />
<s:textfield name="age" label="age" />
获取Struts2的植栈对象
值栈对象的访问
方式(一):
设定值
vs.set(“user1”,new User(“myname”,10));
JSP中获取值
user.name:<s:property value=“user1.name"/><br>
方式(二):
设定值
vs.push(new User("myname",10));
vs.push(new User("hisname",20));
JSP中获取值
user.name:<s:property value=“name"/><br>
user.name:<s:property value=“[index].name"/><br>
OGNL的其他操作方式
直接生成列表或MAP
{list1,list2,list3,list4….}
#{key1:value1,key2:value2
(2)非UI标签—控制标签
if-elseif-else 用于判断控制
append用于将多个集合组合为一个集合对象
generator 将一个字符串生成一个集合
iterator 迭代对象
merge 与append功能相同,但新集合元素排列方式不同
sort 用于集合对象的排序
subset 取集合的子集
if-elseif-else
iterator
merge 与append组合list
s:append的方式
1 |
11 |
2 |
22 |
3 |
33 |
s:merge的方式
1 |
11 |
2 |
aa |
3 |
22 |
s:generator(分割成list)、subset (取)与sort(排序)
comparator排序方式通过实现接口,定义排序方式
非UI标签—数据标签
action 调用action标签
bean 用于创建JavaBean实例
date格式化日期
debug生成调试的超链接,输出context的内容
i18n调用资源文件
push把值压入VS栈顶
set设置一个变量
text用于显示资源文件中的文本
url生成一个URL地址
property直接输出action中的属性值
include包含其他的JSP页面
param为其他标签提供参数
(3)UI标签—表单标签
UI标签—非表单标签
actionerror:如果Action实例的getActionErrors()方法返回不为null,则该标签负责输出该方法返回的系列错误。
fielderror:如果Action实例存在表单域的类型转换错误、校验错误,该标签负责输出这些错误提示。
actionmessage:如果Action实例的getActionMessages()方法返回不为null,则该标签负责输出该方法返回的系列消息。
component:使用此标签可以生成一个自定义组件。
(4)struts2校验框架校验(转)
第一步创建ValidateAction.java
public class validate extends ActionSupport{ private String username; private String password; //get()和set()方法,构造方法
第二步编写验证规则配置文件
在当前包下创建ValidationAction-validation.xml文件。
该文件可以在我们下载的struts2的包里找到:
路径如下:struts-2.3.15.3\apps\struts2-blank\WEB-INF\classes\example\Login-validation.xml
在Struts2中,该XML格式的校验规则配置文件的命名也有规定,需按照以下格式命名:
ActionClassName-validation.xml
或
ActionClassName-ActionName-validation.xml
其中ActionName为struts.xml中为action配置的名称,这里我们采用第一种命名规则
ValidationAction-validation.xml
<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.2//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
<validators>
<field name="username">
<field-validator type="requiredstring"><!-- 必须输入 --> <message>用户名不能为空</message> </field-validator>
</field>
<field name="age"> <field-validator type="int"><!-- 必须是整数 --> <param name="min">13</param>
<param name="max">20</param> <message>必须是数字在13到20之间</message> </field-validator>
</field>
<field name="password">
<field-validator type="stringlength"><!--字符串长度 --> <param name="minLength">6</param>
<param name="maxLength">10</param> <message>密码最少6位最多10位</message> </field-validator>
</field>
</validators>
校验规则:/com/opensymphony/xwork2/validator/validators/default.xml
第三步:在struts.xml中配置Action类
<package name="formTest03" namespace="/" extends="struts-default">
<action name="validate" class = "formTest03.validate" method="execute">
<result name="success">/success.jsp</result>
<result name="input">/validate2.jsp</result>
</action>
</package>
第四步:编写JSP页面 validation.jsp
<body>
<s:form action="validate" method="post">
<s:fielderror>
<s:param>username</s:param>
<s:param>password</s:param>
<s:param>age</s:param>
</s:fielderror>
<s:textfield name="username" label="姓名"></s:textfield>
<s:textfield name="password" label="密码"></s:textfield>
<s:textfield name ="age" label="年龄"></s:textfield>
<s:submit value="提交"></s:submit> </s:form>
</body>