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>