struts2.1.6 tags 06

Struts-Tags

1. 通用標籤:

a) property

b) set

i. 默認爲action scope,會將值放入request和ActionContext中

ii. page、request、session、application

c) bean

d) include(對中文文件支持有問題,不建議使用,如需包含,改用jsp包含)

e) param

f) debug

2. 控制標籤

a) if elseif else

b) iterator

i. collections map enumeration iterator array

c) subset

3. UI標籤

a) theme

i. simple xhtml(默認) css_xhtml ajax

4. AJAX標籤

a) 補充

5. $ # %的區別

a) $用於i18n和struts配置文件

b) #取得ActionContext的值

c) %將原本的文本屬性解析爲ognl,對於本來就是ognl的屬性不起作用

i. 參考<s:property 和 <s:include

________________________________________________________________________


property

Parameters

Name

Required

Default

Evaluated

Type

Description

default false   false String The default value to be used if value attribute is null
escape false true false Boolean Whether to escape HTML
value false <top of stack> false Object Value to be displayed

Examples

  1. <s:push value="myBean">  
  2.     <!-- Example 1: -->  
  3.     <s:property value="myBeanProperty" />  
  4.   
  5.     <!-- Example 2: -->TextUtils  
  6.     <s:property value="myBeanProperty" default="a default value" />  
  7. </s:push>  

property 凡是value 等於Object類型的它都會把裏面的字符串解析爲OGNL表達式

%{} 把裏面的內容當成ognl表達式

  1. package com.demo.tags;  
  2.   
  3. public class Dog {  
  4.     private String name;  
  5.     public Dog() {}  
  6.     public Dog(String name) {  
  7.         this.name = name;  
  8.     }  
  9.     public String getName() {  
  10.         return name;  
  11.     }  
  12.     public void setName(String name) {  
  13.         this.name = name;  
  14.     }  
  15.     @Override  
  16.     public String toString() {  
  17.         return "dog: " + name;  
  18.     }  
  19. }  

  1. package com.demo.tags;  
  2.   
  3. public class User {  
  4.     private int age = 8;  
  5.     public User() {}  
  6.     public User(int age) {  
  7.         this.age = age ;  
  8.     }  
  9.     public int getAge() {  
  10.         return age;  
  11.     }  
  12.     public void setAge(int age) {  
  13.         this.age = age;  
  14.     }  
  15.     @Override  
  16.     public String toString() {  
  17.         return "user" + age;  
  18.     }  
  19. }  

  1. package com.demo.tags;  
  2.   
  3. public class S {  
  4.     public static String STR = "STATIC STRIING";  
  5.     public static String s() {  
  6.         return "static method" ;  
  7.     }  
  8. }  

  1. package com.demo.tags;  
  2.   
  3. import com.opensymphony.xwork2.ActionSupport;  
  4.   
  5. public class TagsAction extends ActionSupport {  
  6.     private String password ;  
  7.     private String username ;  
  8.     public String getPassword() {  
  9.         return password;  
  10.     }  
  11.     public void setPassword(String password) {  
  12.         this.password = password;  
  13.     }  
  14.     public String getUsername() {  
  15.         return username;  
  16.     }  
  17.     public void setUsername(String username) {  
  18.         this.username = username;  
  19.     }  
  20.       
  21.     @Override  
  22.     public String execute() throws Exception {  
  23.         this.addFieldError("fielderror.test","wrong !");  
  24.         return SUCCESS;  
  25.     }  
  26. }  
  1. <%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>  
  2. <%  
  3. String path = request.getContextPath();  
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
  5. %>  
  6.   
  7. <html>  
  8.   <head>  
  9.   </head>  
  10.   <body>  
  11.     訪問屬性  
  12.     <a href="<%=path %>/tags.action?username=u&password=p">tags</a>  
  13.   </body>  
  14. </html>  
  1. <%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>  
  2. <%@taglib uri="/struts-tags" prefix="s"%>  
  3. <%  
  4. String contextPath = request.getContextPath();  
  5. %>  
  6. <%  
  7. String path = request.getContextPath();  
  8. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
  9. %>  
  10.   
  11. <html>  
  12.   <head>  
  13.   </head>  
  14.   <body>  
  15. <ol>  
  16.     <li>property: <s:property value="username"/></li>  
  17.     <li>property取值爲字符串: <s:property value="'username'"/></li>  
  18.     <li>property設定默認值:<s:property value="admin" default="管理員"/></li>  
  19.     <li>property設定HTML: <s:property value="'<hr/>'" escape="false"/></li>  
  20.     <hr/>  
  21.     <li>set 設定adminName值(默認爲request 和ActionContext):<s:set var="adminName" value="username"/></li>  
  22.     <li>set 從request取值: <s:property value="#request.adminName"/></li>  
  23.     <li>set從ActionContext取值: <s:property value="#adminName"/></li>  
  24.     <s:debug></s:debug>  
  25.     <li>set 設定範圍(name已經被廢棄了):<s:set name="adminPassword" value="password" scope="page"/></li>  
  26.     <li>set 從相應範圍取值:<%=pageContext.getAttribute("adminPassword") %></li>  
  27.       
  28.     <li>set 設定var,範圍爲ActionContext(常用): <s:set var="adminPassword" value="password" scope="session"/></li>  
  29.     <li>set 使用#取值: <s:property value="#adminPassword"/></li>  
  30.     <li>set 從相應範圍取值(常用):<s:property value="#session.adminPassword"/></li>  
  31.     <hr/>  
  32.       
  33.     <li>push: <s:set name="myDog" value="new com.demo.tags.Dog('oudy')"/></li>    
  34.     <li>push: <s:push value="#myDog"> <s:property value="name"/></s:push>  
  35.     </li>  
  36.       
  37.     <li>  
  38.         bean定義bean,並使用param來設定新的屬性值  
  39.         <s:bean name="com.demo.tags.Dog"><s:param name="name" value="'pp'"></s:param>  
  40.         <s:property value="name"/></s:bean>  
  41.     </li>  
  42.       
  43.     <li>  
  44.         bean 查看debug情況:  
  45.         <s:bean name="com.demo.tags.Dog" var="myDog">  
  46.             <s:param name="name" value="'oudy'"></s:param>  
  47.         </s:bean>  
  48.         拿出值:  
  49.         <s:property value="#myDog.name"/>  
  50.     </li>  
  51.     <hr/>  
  52.     以下包含文件不推薦使用bug比較多:  
  53.     <li>include _include1.html 包含靜態英文文件  
  54.         <s:include value="/_include1.html"></s:include>  
  55.     </li>  
  56.       
  57.     <li>include _include2.html 包含靜態中文文件(中文試不出來)  
  58.         <s:include value="/_include2.html"></s:include>  
  59.     </li>  
  60.       
  61.     <li>include _include1.html 包含靜態英文文件,說明%用法  
  62.         <s:set var="incPage" value="'/_include1.html'"/>  
  63.         <s:include value="%{#incPage}"/>  
  64.     </li>  
  65.     <hr/>  
  66.       
  67.     <li>  
  68.         if elseif else:  
  69.         age = <s:property value="#parameters.age[0]"/><br/>  
  70.         <s:set var="age" value="#parameters.age[0]"/>  
  71.         <s:if test="#age <0">wrong age !</s:if>  
  72.         <s:elseif test="#parameters.age[0] < 20">too young!</s:elseif>  
  73.         <s:if test="#parameters.aaa == null">null</s:if>  
  74.     </li>  
  75.     <hr/>  
  76.     <li>遍歷集合<br/>  
  77.     <s:iterator value="{1,2,3}">  
  78.         <s:property/>|  
  79.     </s:iterator>  
  80.     </li>  
  81.       
  82.     <li>自定義變量: <br/>  
  83.         <s:iterator value="{'aaa','bbb','ccc'}" var="x">  
  84.             <s:property value="#x.toUpperCase()"/>  
  85.         </s:iterator>  
  86.     </li>  
  87.       
  88.     <li>使用status: <br/>  
  89.     <s:iterator value="{'aaa','bbb','ccc'}" status="status">  
  90.         <s:property/> |  
  91.         遍歷過的元素總數: <s:property value="#status.count"/> |  
  92.         遍歷過的元素索引: <s:property value="#status.index"/> |  
  93.         當前是偶數?: <s:property value="#status.even"/> |  
  94.         當前是奇數?: <s:property value="#status.odd"/> |  
  95.         是第一個元素嗎?: <s:property value="#status.first"/> |  
  96.         是最後一個元素嗎?:<s:property value="#status.last"/>   
  97.         <br/>  
  98.     </s:iterator>  
  99.     </li>  
  100.       
  101.     <li>  
  102.     定義Map:  
  103.     <s:iterator value="#{1:'a',2:'b',3:'c'}">  
  104.         <s:property value="key"/> | <s:property value="value"/> <br/>  
  105.     </s:iterator>  
  106.     </li>  
  107.       
  108.     <li>  
  109.         <s:iterator value="#{1:'a',2:'b',3:'c'}" var="x">  
  110.             <s:property value="#x.key"/> | <s:property value="#x.value"/> <br/>  
  111.         </s:iterator>  
  112.     </li>  
  113.     <s:fielderror fieldName="fielderror.test" theme="simple"></s:fielderror>  
  114. </ol>  
  115.   
  116.   </body>  
  117. </html>  
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE struts PUBLIC  
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
  4.     "http://struts.apache.org/dtds/struts-2.0.dtd">  
  5.   
  6. <struts>  
  7. <!--     <constant name="struts.enable.DynamicMethodInvocation" value="false"/> -->  
  8.     <constant name="struts.devMode" value="true"/>       
  9.       
  10. <!--     <constant name="struts.ognl.allowStaticMethodAccess" value="true"/> -->  
  11.     <constant name="struts.ui.theme" value="simple"></constant>  
  12.     <package name="resultType" extends="struts-default" >  
  13.     <action name="tags" class="com.demo.tags.TagsAction">  
  14.         <result>/tags.jsp</result>  
  15.     </action>  
  16.           
  17.     </package>  
  18. </struts>  

    list-style-type: none  把小圓圈去掉  o wrong!變成 wrong!

定義自己的theme

1. css(覆蓋struts2原來的css)

2. 覆蓋單個文件

3. 定義自己的theme

4. 實戰:

a) 把所有主題定義爲simple

b) fielderror特殊處理

c) 自己控制其他標籤的展現


  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE struts PUBLIC  
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
  4.     "http://struts.apache.org/dtds/struts-2.0.dtd">  
  5.   
  6. <struts>  
  7.       
  8.     <constant name="struts.devMode" value="true"/>     
  9.  <!--   <constant name="struts.ui.theme" value="css_xhtml"/> -->    
  10.           <constant name="struts.ui.theme" value="simple"/>   
  11.       
  12.     <package name="resultType" extends="struts-default" namespace="/">  
  13.         <action name="theme" class="com.demo.theme.ThemeAction">  
  14.             <result>/theme.jsp</result>  
  15.         </action>  
  16.     </package>  
  17. </struts>  
  1. <?xml version="1.0" encoding="GB18030" ?>  
  2. <%@ page language="java" contentType="text/html; charset=GB18030"  
  3.     pageEncoding="GB18030"%>  
  4. <%@ taglib uri="/struts-tags" prefix="s" %>  
  5.   
  6. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  7. <html xmlns="http://www.w3.org/1999/xhtml">  
  8. <head>  
  9. <meta http-equiv="Content-Type" content="text/html; charset=GB18030" />  
  10. <title>theme學習</title>  
  11.   
  12. <style type="text/css">  
  13. .formFieldError {  
  14. font-family: verdana, arial, helvetica, sans-serif;  
  15. font-size: 12px;  
  16. color: #FF3300;  
  17. vertical-align: bottom;  
  18. }  
  19.   
  20. .formFieldError ul {  
  21.     /*list-style-type: none*/  
  22.     margin: 0px;  
  23.     padding: 3px;  
  24.     vertical-align: middle;  
  25. }  
  26.   
  27. .formFieldError ul li{  
  28.     list-style-type: none  
  29.      
  30. }  
  31. </style>  
  32.   
  33. </head>  
  34. <body>  
  35. 用CSS控制顯示  
  36.     <ol>  
  37.         <li>  
  38.         <s:form >  
  39.         <div class="formFieldError">  
  40.         <s:fielderror />  
  41.         </div>  
  42.         <s:textfield name='aaa'></s:textfield>  
  43.         </s:form>  
  44.         </li>  
  45.     </ol>  
  46. </body>  
  47. </html> 

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