struts标签小结

本文转载自http://www.cnblogs.com/focusj/archive/2011/01/04/2057651.html

struts2标签

      终于把struts2标签看的差不多了,不过还有好多还不是很熟悉,我是结合Max的struts2教程和struts自带的reference文档学习的!笔记中有好多都是从Max的博客中搬来的。不过也没有办法,咱水平还不行,也只能站在人家的肩膀上学习一下了!!

      if,elseif, else标签

?
<%@ page language= "java"  import = "java.util.*"  pageEncoding= "UTF-8" %>
<%@ taglib uri= "/struts-tags"  prefix= "s" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+ "://" +request.getServerName()+ ":" +request.getServerPort()+path+ "/" ;
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >
<html>
   <head>
     <base href= "<%=basePath%>" >
     
     <title>My JSP 'tags.jsp'  starting page</title>
     
     <meta http-equiv= "pragma"  content= "no-cache" >
     <meta http-equiv= "cache-control"  content= "no-cache" >
     <meta http-equiv= "expires"  content= "0" >   
     <meta http-equiv= "keywords"  content= "keyword1,keyword2,keyword3" >
     <meta http-equiv= "description"  content= "This is my page" >
   </head>
   
   <body>
     <!--
         小技巧:#parameters.country[ 1 ]可以这样取值!原来Struts2是将URL传的参数封装 成一个数组的,
         也就是说你可以在一个URL传两个同名的参数(即?name=a&name=b);
      -->
     <%request.setCharacterEncoding( "utf-8" );%>
     (request获取方式)country=<%=request.getParameter( "country" ) %><br>
     <s: if  test= "#parameters.country[1] == 'www'" >中国</s: if >
     <s:elseif test= "#parameters.country[0] == '美国'" >美国</s:elseif>
     <s: else  >其他国籍的人</s: else >
     <br>
     
     <!-- 为某个属性赋值 -->
     <s:set name= "country"  value= "#parameters.country[1]" ></s:set>
     country=<s:property value= "#country"  /> <br>   
     <s: if  test= "#country == 'www'" >中国</s: if >
     <s:elseif test= "#country == '美国'" >美国</s:elseif>
     <s: else  >其他国籍的人</s: else >
     <br>
   </body>
</html>

  

这里面有个小常识,就是通过url传递参数的时候:Struts2是将URL传的同名参数封装成一个数组,也就是说我们可以在一个URL传两个同名的参数(即?name=a&name=b);获取的时候直接#parameters.name[0], parameters.name[1]就可以分别取出两个参数的值。

      include标签

  被包含页面:

?
<%@ page language= "java"  import = "java.util.*"  pageEncoding= "UTF-8" %>
<%@ taglib uri= "/struts-tags"  prefix= "s" %>
this  is the include page!!!

  包含页面:

?
<%@ page language= "java"  import = "java.util.*"  pageEncoding= "UTF-8" %>
<%@ taglib uri= "/struts-tags"  prefix= "s" %>
<%
     String path = request.getContextPath();
     String basePath = request.getScheme() + "://"
             + request.getServerName() + ":"  + request.getServerPort()
             + path + "/" ;
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >
<html>
     <head>
         <base href= "<%=basePath%>" >
         <title>My JSP 'includea.jsp'  starting page</title>
         <meta http-equiv= "pragma"  content= "no-cache" >
         <meta http-equiv= "cache-control"  content= "no-cache" >
         <meta http-equiv= "expires"  content= "0" >
         <meta http-equiv= "keywords"  content= "keyword1,keyword2,keyword3" >
         <meta http-equiv= "description"  content= "This is my page" >
         <!--
     <link rel= "stylesheet"  type= "text/css"  href= "styles.css"  mce_href= "styles.css" >
     -->
     </head>
     <body>
         This is my JSP1 page.
         <br>
         <s:include value= "include.jsp" >
             <!-- 提交表单时才会获得value的值 -->
             <s:param name= "value1" >test1</s:param>
             <s:param name= "value2"  value= "user" ></s:param>
         </s:include>
     </body>
</html> 

当然struts的include标签静态动态页面都能包含的!

      i18n标签 
描述:加载资源包到值堆栈。它可以允许text标志访问任何资源包的信息,而不只当前action相关联的资源包。

?
<%@ page language= "java"  import = "java.util.*"  pageEncoding= "UTF-8" %>
<%@ taglib uri= "/struts-tags"  prefix= "s" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+ "://" +request.getServerName()+ ":" +request.getServerPort()+path+ "/" ;
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >
<html>
   <head>
     <base href= "<%=basePath%>" >
     
     <title>My JSP 'tags3.jsp'  starting page</title>
     
     <meta http-equiv= "pragma"  content= "no-cache" >
     <meta http-equiv= "cache-control"  content= "no-cache" >
     <meta http-equiv= "expires"  content= "0" >   
     <meta http-equiv= "keywords"  content= "keyword1,keyword2,keyword3" >
     <meta http-equiv= "description"  content= "This is my page" >
     <!--
     <link rel= "stylesheet"  type= "text/css"  href= "styles.css"  mce_href= "styles.css" >
     -->
   </head>
   
   <body>
      <!-- <s:text>标签没弄明白 -->
      <s:i18n name= "I18N" >
         The i18n value is <s:text name= "hi!!" ></s:text>
      </s:i18n>
      <br>
      <s:debug></s:debug>
   </body>
</html> 

  

      iterator标签   

?
<%@ page language= "java"  import = "java.util.*"  pageEncoding= "UTF-8" %>
<%@ taglib uri= "/struts-tags"  prefix= "s" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+ "://" +request.getServerName()+ ":" +request.getServerPort()+path+ "/" ;
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >
<html>
   <head>
     <base href= "<%=basePath%>" >
     
     <title>My JSP 'tags2.jsp'  starting page</title>
     
     <meta http-equiv= "pragma"  content= "no-cache" >
     <meta http-equiv= "cache-control"  content= "no-cache" >
     <meta http-equiv= "expires"  content= "0" >   
     <meta http-equiv= "keywords"  content= "keyword1,keyword2,keyword3" >
     <meta http-equiv= "description"  content= "This is my page" >
     <!--
     <link rel= "stylesheet"  type= "text/css"  href= "styles.css"  mce_href= "styles.css" >
     -->
   </head> 
   <%
     List<String> strs = new  ArrayList<String>();
     strs.add( "a" );
     strs.add( "b" );
     strs.add( "c" );
     strs.add( "d" );
     strs.add( "e" );     
     request.setAttribute( "strs" , strs);
   %>
   <body>
     <s:iterator value= "#request.strs"  var= "strs" >
         <s:property value= "#strs" />
     </s:iterator>
     <s:debug></s:debug>
   </body>
</html>

  

这个标签挺容易理解的。

      param标签

struts2的<s: param>标签问我觉得比较复杂的。struts2的s:param标签主要有两个属性name与value, 若想在value属性中输入直接量,则可以这样写:<s:param name="some" value="%{'user'}"/>,  也可以这样写:<s:param name="some">user</s:param>。 但如果直接赋值,这个值不是由Action动态生成的,而是自己指定的一个字符串,则只能用后者。

param页面代码:

?
<%@ page language= "java"  import = "java.util.*"  pageEncoding= "UTF-8" %>
<%@ taglib uri= "/struts-tags"  prefix= "s" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+ "://" +request.getServerName()+ ":" +request.getServerPort()+path+ "/" ;
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >
<html>
   <head>
     <base href= "<%=basePath%>" >
     
     <title>My JSP 'param.jsp'  starting page</title>
     
     <meta http-equiv= "pragma"  content= "no-cache" >
     <meta http-equiv= "cache-control"  content= "no-cache" >
     <meta http-equiv= "expires"  content= "0" >   
     <meta http-equiv= "keywords"  content= "keyword1,keyword2,keyword3" >
     <meta http-equiv= "description"  content= "This is my page" >
     <!--
     <link rel= "stylesheet"  type= "text/css"  href= "styles.css"  mce_href= "styles.css" >
     -->
   </head>
   
   <body>
     <!-- struts2的s:param标签主要有两个属性name与value,
     若想在value属性中输入直接量,则可以这样写:<s:param name= "some"  value= "%{'user'}" />,
     也可以这样写:<s:param name= "some" >user</s:param>。
     但如果直接赋值,这个值不是由Action动态生成的,而是自己指定的一个字符串,则只能用后者。 -->
     <s:url value= "paramAction.jsp"  id= "href" >
         <s:param name= "value1" >hello!!</s:param>
         <s:param name= "valu2"  value= "%{'HELLO!'}" ></s:param>
     </s:url>
     <s:a href= "%{href}"  mce_href= "%{href}" >paramAction</s:a>
     <s:debug></s:debug>
   </body>
</html>

  

paramAction页面:

?
<%@ page language= "java"  import = "java.util.*"  pageEncoding= "UTF-8" %>
<%@ taglib uri= "/struts-tags"  prefix= "s" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+ "://" +request.getServerName()+ ":" +request.getServerPort()+path+ "/" ;
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >
<html>
   <head>
     <base href= "<%=basePath%>" >
     
     <title>My JSP 'paramAction.jsp'  starting page</title>
     
     <meta http-equiv= "pragma"  content= "no-cache" >
     <meta http-equiv= "cache-control"  content= "no-cache" >
     <meta http-equiv= "expires"  content= "0" >   
     <meta http-equiv= "keywords"  content= "keyword1,keyword2,keyword3" >
     <meta http-equiv= "description"  content= "This is my page" >
     <!--
     <link rel= "stylesheet"  type= "text/css"  href= "styles.css"  mce_href= "styles.css" >
     -->
   </head>
   
   <body>
     value1的值:<%=request.getParameter( "value1" ) %><br>
     value1的值:<s:property value= "#parameters.value1"  /><br>
     value2的值:<%=request.getParameter( "value2" ) %><br/><!-- 获取不到值 -->
     value2的值:${#param.value2 }<!-- 获取不到值 -->
     <s:debug></s:debug>
   </body>
</html>

  

      经常用到的UI标签

?
<%@ page contentType= "text/html; charset=UTF-8"  pageEncoding= "UTF-8"  %>
<%@ taglib prefix= "s"  uri= "/struts-tags"  %>
<%@ taglib prefix= "s"  uri= "/struts-tags"  %>
<%@ taglib prefix= "sx"  uri= "/struts-dojo-tags"  %>
<html>
<head>
     <title>UI Tags Example</title>
     <s:head />
      <sx:head parseContent= "true" />   
</head>
<body>
<s:actionerror/>
<s:actionmessage/>
<s:fielderror />
<s:form action= "exampleSubmit"  method= "post"  enctype= "multipart/form-data"  tooltipConfig= "#{'jsTooltipEnabled':'true'}" >
     <s:textfield
             label= "Name"
             name= "name"
             tooltip= "Enter your Name here"  />
     <s:date name= "Select Your Birthday" />
     <!-- 在struts2. 2.1 中<sx:datetimepicker/>的标签使用有所变化,需要引入struts2-dojo-plugin- 2.2 . 1 .jar
          这个包。  
     -->
     <sx:datetimepicker
             tooltip= "Select Your Birthday"
             label= "Birthday"
             name= "birthday"  />
     <s:textarea
             tooltip= "Enter your Biography"
             label= "Biograph"
             name= "bio"
             cols= "20"
             rows= "3" />
     <s:select
             tooltip= "Choose Your Favourite Color"
             label= "Favorite Color"
             list= "{'Red', 'Blue', 'Green'}"
             name= "favoriteColor"
             emptyOption= "true"
             headerKey= "None"
             headerValue= "None" />
     <s:select
             tooltip= "Choose Your Favourite Language"
             label= "Favourite Language"
             list= "#{'CN':'中文','EN':'英文','FR':'外文'}"
             name= "favouriteLanguage"
             emptyOption= "true"
             headerKey= "None"
             headerValue= "None" />
     <s:checkboxlist
             tooltip= "Choose your Friends"
             label= "Friends"
             list= "{'Patrick', 'Jason', 'Jay', 'Toby', 'Rene'}"
             name= "friends" />
     <s:checkbox
             tooltip= "Confirmed that your are Over 18"
             label= "Age 18+"
             name= "legalAge" />
     <s:doubleselect
             tooltip= "Choose Your State"
             label= "State"
             name= "region"  list= "{'North', 'South'}"
             value= "'South'"
             doubleValue= "'Florida'"
             doubleList= "top == 'North' ? {'Oregon', 'Washington'} : {'Texas', 'Florida'}"
             doubleName= "state"
             headerKey= "-1"
             headerValue= "---------- Please Select ----------"
             emptyOption= "true"  />
      <s:file
             tooltip= "Upload Your Picture"
             label= "Picture"
             name= "picture"  />
             
     <s:optiontransferselect
             tooltip= "Select Your Favourite Cartoon Characters"
             label= "Favourite Cartoons Characters"
             name= "leftSideCartoonCharacters"
             leftTitle= "Left Title"
             rightTitle= "Right Title"
             list= "{'Popeye', 'He-Man', 'Spiderman'}"
             multiple= "true"
             headerKey= "headerKey"
             headerValue= "--- Please Select ---"
             emptyOption= "true"
             doubleList= "{'Superman', 'Mickey Mouse', 'Donald Duck'}"
             doubleName= "rightSideCartoonCharacters"
             doubleHeaderKey= "doubleHeaderKey"
             doubleHeaderValue= "--- Please Select ---"
             doubleEmptyOption= "true"
             doubleMultiple= "true"  />
     
     <s:textarea
             label= "Your Thougths"
             name= "thoughts"
             tooltip= "Enter your thoughts here"  />
             
     <s:submit onclick= "alert('aaaa');"  />
     <s:reset onclick= "alert('bbbb');"  />
</s:form>
     
</body>
</html>

  

这些代码是直接从Max的博文中copy过来的,本来这是一个完整的例子我只是把前台展示代码考过来了。在这里有一个要注意的地方,不过在代码中也有体现,这是struts2比较高级的版本和低版本之间的区别,具体从哪个 版本改的我也不是很清楚。这个不同的用法是关于<s: datetimepicker>的。在使用<s: datetimepicker>时,较高的版本中还必须引入struts2-dojo-plugin-2.2.1.jar,还得指明<%@ taglib prefix="sx" uri="/struts-dojo-tags" %> ,如果做实验不成功的可以考虑下是不是这个问题。

      struts-tags就算是复习到这里了,如果要是配合一个具体的项目的话就会更好了,继续努力!!!

                                                                                                 

你可能感兴趣的:(struts2,Ognl,表达式语言)