struts2学习笔记一------struts2标签学习

原文链接:http://www.cnblogs.com/focusj/archive/2011/01/04/2057651.html#top

 

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标签)