• 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就算是复习到这里了,如果要是配合一个具体的项目的话就会更好了,继续努力!!!

  • 相关阅读:
    c++Primer再学习(1)
    c++Primer再学习练习Todo
    感悟(一)
    新目标《C++程序设计原理与实践》
    C++Primer再学习(4)
    开篇
    C++Primer再学习(3)
    C++实现的单例模式的解惑
    使用springboot缓存图片
    springboot h2 database
  • 原文地址:https://www.cnblogs.com/Wfei/p/2783796.html
Copyright © 2020-2023  润新知