zoukankan      html  css  js  c++  java
  • 5.Struts2-Struts标签

    通用标签  

      1.property(取值)
        property:<s:property value="username"/>

        property 取值为字符串:<s:property value="'usernmae'"/>

        property 设定默认值:<s:property value="admin" default="管理员"/>

        property 设定HTML:<s:property value="'<hr/>'" escape="false"> (默认为true 即遇到html标签不要进行转义)

        注:因为ognl 表达式 可能是有很多类型的结果,所以默认是Object类型,如<s:property value="username"/> username 是Object类型

        如果想要取值为字符串 需要再加上     '  '

        /*如果取ValueStack中的值时,是不需要带#的,可以直接取,除了ValueStack中的,其他的,取的时候都要加 # */

      

      2.set (设值)一般用于:当某个属性的名字太长,想要换个名字,可以用set来换一下

        set 设定adminName值:<s:set var="adminName" value="username"/> (默认会存在 request 和 ActionContext)

        set 从request取值:<s:property value="#request.adminName"/>

        set 从ActionContext取值:<s:property value="adminName"/>

        set 设定var 范围ActionContext:<s:set var="adminPassword" value="password" scope="session">

        set 使用#取值:<s:property value="#adminPassword"/>

      

      3.bean

     1         <li>bean 定义bean,并使用param来设定新的属性值:
     2             <s:bean name="com.bjsxt.struts2.tags.Dog">
     3                 <s:param name="name" value="'DogName'"></s:param>
     4                 <s:property value="name"/>
     5                 
     6             </s:bean>
     7         </li>    
     8         
     9         <li>bean 查看debug情况:
    10             <s:bean name="com.bjsxt.struts2.tags.Dog"  var="myDog">
    11                 <s:param name="name" value="'DogName'"></s:param>
    12                 <s:debug></s:debug>
    13             </s:bean>
    14             拿出值:
    15             <s:property value="#myDog.name"/>
    16             
    17         </li>

        两个属性:

        1.name new 哪个bean的对象(Dog)

        2.var 设定要不要把它放到ActionContext里面

        执行过程: 开始的时候,new 这个指定对象(如:Dog),放到栈顶,在结束的时候,从栈顶拿走

        set 从相应的范围取值:<s:property value="#session.adminPassowrd">

      

      4.include(不常用)

        <s:include value="/_include1.html"></s:include>

        include _include1.html 包含静态英文文件,说明%用法 %{}

        <s:set var="incPage" value="'/_include1.html'" />

        <s:include value="%{#incPage}"></s:include>

        注:过程 1.往request 和 AcctionContext中 存了一个 key为 incPage , value 为 '/_include1.html' (字符串)

          2.使用include标签 取出incPage对应的值,进行包含

          如果include 标签中的value属性是Object类型(支持OGNL表达式) 那么 取出在ActionContext中的incPage对应的值 #incPage

          但是include 标签中的value属性是String类型,但是如果想要取出incPage对应的值,必须为 %{#incPage} ,使其支持OGNL表达式

        所以:%的用法,将原本的文本属性解析为ognl类型,对于原本就是ognl的属性不起作用

    控制标签

      1.if  elseif  else

        <s:set var="age" value="#parameters.age[0]"></s:set>

        <s:if test="#age < 0">wrong!</s:if>

        <s:elseif test="#age <20" >too young!</s:elseif>

        <s:else >right</s:else>

      注:parameters 指的是前台传来的参数,前台传来的参数默认都是String类型吧,

        为什么使用前台传来的参数可以直接和数字去比较, Struts这里做了处理转换吧

      

      2.iterator
        三个属性
        1.value 指定遍历的集合
          <s:iterator value="{'a', 'b', 'c'}" >
             <s:property /> |
          </s:iterator>

         会默认构造成一个List集合,对这个List集合进行遍历

        2.var 指向当前遍历的元素

        <s:iterator var="this" value="{'aaa','bbb','ccc'}">
          <s:property value="#this.toUpperCase()"/> |
        </s:iterator>

         对每一个遍历的元素(字符串)调用toUpperCase() 变成大写

        3.status 遍历的状态
        <li>使用status:<br />
        <s:iterator value="{'aaa','bbb','ccc'}" 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> 得到遍历的一些状态 如上

      注:构造Map集合,需要在前面加上 '#' <s:iterator value="#{1:'a', 2:'b', 3:'c'}" >
      对集合的遍历是使用<s:property />来取出每一个元素

      3.subset
        subset标签用于取得集合的子集

    UI标签

      注:在使用 <s:fielderror fieldName="fielderror.test" theme="simple"></s:fielderror>

      Struts会使用自己的CSS 为结果进行渲染,然而我们一般不想用这种渲染,所以我们要定义自己的theme,

      或者修改Struts中的theme来得到我们想要的显示效果

      <s:form>标签 是struts2 对 表单样式的 封装

      <s:form >

        <s:textfield name='aaa'></s:textfield>

      </s:form>


      如上,在html源码是这样的效果(在 theme="simple"的前提下 不同的theme 有不同的结果)

        <form id="theme" name="theme" action="/Struts2_21_Theme1/theme.action" method="post">

          <input type="text" name="aaa" value="" id="theme_aaa"/>

        </form>

      theme (simple xhtml(默认)css_xhtml ajax)

      定义自己的theme
        1.css (自己编写css或覆盖struts2原来的css)
        2.覆盖单个文件(fieldError.ftl) 修改struts中的theme 需要懂 freemarker
        /*注意:fieldError.ftl 需要放到 template.simple 包下,不然无法找到这个文件*/
        3.定义自己的theme (第五种theme)
        创建一个包名为 template.mytheme 放到根目录下,将一个theme需要的文件,统统拷贝到这个包下,其中fieldError.ftl 是经过修改的
        之后要使用主题,可以使用 value 为 mytheme 的主题。 在struts.xml中声明 <constant name="struts.ui.theme" value="mytheme" />
        4.实战:
          1.theme 一般都使用simple
          2.fieldError 特殊处理 (使用第一点的方式,比较直接方便)
          3.自己控制其他标签的展现(正常使用struts2的其他标签)

  • 相关阅读:
    Hibernate框架—简介
    ooad单例模式-Singleton
    About-JavaOOAD
    win10内置ubuntu,mysql完美清理,并安装
    VUE关于对象动态添加属性无法双向绑定问题
    正则留档
    centos下tomcat中文路径不识别
    web服务器解释html-include
    rose
    聊天框突出箭头
  • 原文地址:https://www.cnblogs.com/xuzekun/p/7380636.html
Copyright © 2011-2022 走看看