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>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章