web.xml配置如下:
- < filter >
- < filter-name > struts2 </ filter-name >
- < filter-class >
- org.apache.struts2.dispatcher.FilterDispatcher
- </ filter-class >
- </ filter >
- < filter-mapping >
- < filter-name > struts2 </ filter-name >
- < url-pattern > /* </ url-pattern >
- </ filter-mapping >
struts.xml配置如下:
- < package name = "tags" extends = "struts-default" >
- < action name = "tags" class = "com.mengya.action.TagsAction" >
- < result name = "success" > /tags.jsp </ result >
- </ action >
- </ package >
TagsAction如下:
- public class TagsAction extends ActionSupport {
- private String username;
- private String password;
- @Override
- public String execute() throws Exception {
- this .addFieldError( "actionError" , "error!!" );
- return SUCCESS;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this .password = password;
- }
- public String getUsername() {
- return username;
- }
- public void setUsername(String username) {
- this .username = username;
- }
- }
public class TagsAction extends ActionSupport {
private String username;
private String password;
@Override
public String execute() throws Exception {
this.addFieldError("actionError", "error!!");
return SUCCESS;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
Dog Bean如下:
- public class Dog {
- private String dogName;
- public String getDogName() {
- return dogName;
- }
- public void setDogName(String dogName) {
- this .dogName = dogName;
- }
- @Override
- public String toString() {
- return "Dog:DogName=" + dogName;
- }
- }
public class Dog {
private String dogName;
public String getDogName() {
return dogName;
}
public void setDogName(String dogName) {
this.dogName = dogName;
}
@Override
public String toString() {
return "Dog:DogName=" + dogName;
}
}
頁面struts標籤使用如下:
- < a href = "tags.action?username=u&password=p&age=9" > Struts2Tags </ a >
- < body >
- < ol >
- < 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 >
- < hr />
- < li >
- set 設定mengya的值(默認爲Request和ActionContext):
- < s:set var = "mengya" value = "username" > </ s:set >
- </ li >
- < li >
- set 從request中取值:
- < s:property value = "#request.mengya" />
- </ li >
- < li >
- set 從ActionContext中取值:
- < s:property value = "#mengya" />
- </ li >
- < li >
- set 設定範圍:
- < s:set var = "adminPassword" value = "password" scope = "session" />
- </ li >
- < li >
- set 從相應的範圍取值:
- < %=session.getAttribute("adminPassword")% >
- </ li >
- < li >
- set 從相應的範圍取值:
- < s:property value = "#session.adminPassword" />
- </ li >
- < hr >
- < li >
- bean 定義bean,並使用bean的param來設定的新屬性值
- < s:bean name = "com.mengya.bean.Dog" > </ s:bean >
- < %-- 沒有指定var則在 </ s:bean > 之前會構造一個對象放在椎頂在 </ s:bean > 結束之前則放到了actionContext中 --% >
- </ li >
- < li >
- bean 定義bean,並使用bean的param來設定的新屬性值
- < s:bean name = "com.mengya.bean.Dog" var = "myDog" >
- < s:param name = "dogName" value = "'myDog'" > </ s:param >
- </ s:bean >
- 取出值:
- < s:property value = "#myDog" />
- </ li >
- < hr >
- < li >
- include 包含靜態英文html
- < s:include value = "/include1.html" > </ s:include >
- </ li >
- < li >
- include 包含靜態中文html
- < s:include value = "/include2.html" > </ s:include >
- </ li >
- < li >
- < font color = "red" > %的用法:%是將%{}中的內空強轉成ognl表達示而不是普通字符串 </ font >
- < s:set var = "incPage" value = "'/include1.html'" > </ s:set >
- < br >
- < s:include value = "incPage" > </ s:include >
- < br >
- < s:include value = "%{incPage}" > </ s:include >
- < %-- 將incPage作爲ognl表達式 --% >
- </ li >
- < li >
- fielderror:
- < s:fielderror key = "actionError" theme = "simple" > </ s:fielderror >
- </ li >
- < hr >
- < li >
- if elseif else: age =
- < s:property value = "#parameters.age[0]" />
- < s:if test = "#parameters.age[0]<0" >
- age error!
- </ s:if >
- < s:elseif test = "#parameters.age[0]<20" >
- to young!
- </ s:elseif >
- < s:else >
- OK!
- </ s:else >
- |
- < s:set var = "age" value = "#parameters.age[0]" > </ s:set >
- < s:if test = "age<0" >
- age error!
- </ s:if >
- < s:elseif test = "age<20" >
- to young!
- </ s:elseif >
- < s:else >
- ok!
- </ s:else >
- |
- < s:if test = "#parameters.aaa==null" > null </ s:if >
- </ li >
- < li >
- 遍歷集合:
- < br >
- < s:iterator value = "{'aa','bb','cc'}" >
- < s:property /> |
- </ s:iterator >
- </ li >
- < li >
- 自定義變量:
- < br >
- < s:iterator value = "{'aa','bb','cc'}" var = "temp" >
- < s:property value = "#temp" /> | < s:property
- value = "#temp.toUpperCase()" />
- </ s:iterator >
- </ li >
- < li >
- 使用status:
- < br >
- < s:iterator value = "{11,22,33}" status = "status" >
- < s:property /> |遍歷過的總元素: < s:property value = "#status.count" /> |當前元素索引: < s:property
- value = "#status.index" /> |當前值是否爲偶數: < s:property
- value = "#status.even" /> |當前值是否爲奇數: < s:property
- value = "#status.odd" /> |當前值是否爲第一個: < s:property
- value = "#status.first" /> |當前值是否爲最後一個: < s:property
- value = "#status.last" />
- < br />
- </ s:iterator >
- </ li >
- < s:debug > </ s:debug >
- </ ol >
- 總結:
- $用於i18n和struts配置文件
- #用於得到ActionContext的值
- %將原本的文本屬性解析爲OGNL表達式,對於本來就是OGNL的屬性不起做用
- </
body
>