美文网首页
Struts2标签

Struts2标签

作者: 黎涛note | 来源:发表于2017-12-29 18:16 被阅读0次
1、用来输出值。
<s:property value="key" escape="true" default=""/>

value的值是OGNL表达式。如果没有设置value属性,则输出值栈栈顶对象default属性用于设置默认值,即未找到属性值时显示的值。

2、用来将某个变量及其值放入ActionContext中
<s:set var=“age" value="5" scope=“action”></s:set>

scope可取值有request,session,application,action,若未设置scope则放入ActionContext。
获取时要使用#。

<s:property value="#age" />

也可直接创建一个集合对象(List或Map),如下代码:

<s:set var="list" value="{'zhangsan','李四','王麻子'}" />

生成Map:

<s:set var="map" value="#{'z':'张三', 'l':'李四'}"/>
3、条件判断标签
<s:if><s:else>标签
<s:if test="age<20">
<s:if test="list.size()<2">
<s:if test="list==null || list.size()==0">
  null
</s:if>
<s:else>
  not null
</s:else>

注:test属性值中可使用and、or,也可使用&&、||。

4、<s:url>标签,用于辅助生成url字符串
<s:url var="linkName" action="productdAction" method="view">
  <s:param name="prdId">2</s:param>
</s:url>
<s:a href="%{#linkName}">查看产品</s:a>
注:%{ }的使用,在表达式可能被看做字符串的情况下,使用%{}符号表明该字符串是OGNL表达式,%{ }只有在Struts标签中才生效。也可改用下述代码:
<a href='<s:property value="#linkName"/>'>test</a>
5、<s:iterator/>标签用来迭代输出集合。

该标签有3个属性:

value:指定被迭代的集合
var :指定引用当前元素变量名
status属性:指定引用IteratorStatus实例的变量名。
IteratorStatus实例中存在以下几个方法:
int getCount() 返回迭代计数
int getIndex() 返回当前元素索引
boolean isEven() 当前元素count是否偶数
boolean isFirst() 是否第一个元素
boolean isLast() 是否最后一个元素
boolean isOdd() 当前元素count是否奇数

【示例】

<s:iterator value="#list" var='v' status="st">
<s:if test="#st.even">
  <s:property value="#st.count" />
</s:if>
当前元素值:<s:property value="#v" /> <br />
</s:iterator>
6、<s:date name=format=/>标签用来格式化日期对象为字符串name指定待格式化的日期指;format指定格式。

例如:

<s:date name="" format="yyyy-MM-dd HH:mm:ss" var="v" />
上面的所有示例
<!-- 引用字符串常量 必须加引号 -->
        <s:property value="'my name is xixi'"/> <br/>
        <!-- 将数字常量显示到jsp页面 -->
        <s:property value="360" /> <br/>
        
        <!-- 调用值栈中的Map对象 属性 -->
        <s:property value="user.testString"/> <br/>
        <!-- 调用值栈中的Map对象 方法 -->
        <s:property value="user.getTestString()"/> <br/>
        <!-- 调用类的静态方法 -->
        <s:property value="@@floor(39.44)"/> <br/>
        <!-- 不用将特殊的字符转为字符串的形式 -->
        
        <s:property value="someValue" escape="false" /> <br/>
        <!-- 按照原来的形式进行输出 ,将特殊殊的字符进行转换,转化为字符串-->
        <s:property value="someValue" /> <br/>
        
        <!-- 设置一个linkName的URL路径 -->
        <s:url var="linkName" action="DefaultAction" method="view">
            <s:param name="prdId">2</s:param>
        </s:url>
        <!-- struts 会将我的#linkName当做一个锚点,将#linkName的URL追加到当前的URL -->
        <!-- http://localhost:8088/struts_demo/test.action#linkName--> 
        <a href="#linkName">linkName1</a><br/>
        <!-- 生成正确的超链接地址  -->
         <!-- http://localhost:8088/struts_demo/%%7B#linkName}--> 
        <a href='<s:property value="#linkName"/>'>linkName2</a><br/>
        <!-- 在生成的url的变量前加上了%{}, 明确的告诉struts框架,我当前变量的值按照ognl表达式去解析,而不是锚点 -->
        <!-- %{} 只在你期望将一个可能会被解析字符串url时,加上这才起作用,否则,无任何作用 -->
        <!-- http://localhost:8088/struts_demo/DefaultAction!view.action?prdId=2 -->
        <s:a href="%{#linkName}">linkName3</s:a><br/>
        <!-- 在普通的a标签中使用%{}没有作用-->
        <!-- http://localhost:8088/struts_demo/%%7B#linkName}--> 
        <a href="%{#linkName}">linkName4</a>
        
        <!-- 定义一个列表 -->
        <s:set var="myList" value="{'zzzz','sssss','ddddd','rrrrr','hhhhh'}"></s:set>
        <ul>
            <s:iterator value="#myList" var="str" status="sts">
                <li><s:property value="#sts.count"/>&nbsp:&nbsp&nbsp<s:property value="#str"/></li>           
            </s:iterator>
        </ul>
        
        <!-- 输出日期的形式 -->
        <!-- 17-12-29  -->
        <s:property value="dob"/>
        <s:date name="dob" format="yyyy/MM/dd HH:mm:ss" var="date"/>
        <!-- 2017/12/29 12:42:38 -->
        <s:property value="date"/>
7、【了解】Struts2 UI标签
<s:form action="login">
  <s:textfield tooltip="name" label="姓名" name="userName" />
  <s:password tooltip="password" label="密码" name="pwd"></s:password>
  <s:textarea tooltip="content" label="备注" name="remark" cols="30"
    rows="3" />
  <s:file tooltip="Attachment" label="附件" name="photo" />
  <s:a href="get.jsp">超链接</s:a>
  <s:submit value="Login"></s:submit>
  <s:reset value="reset"></s:reset>
</s:form>
image.png
各标签可使用的属性:
theme,cssStyle,cssClass,cssErrorClass,cssErrorStyle,name,value,......

使用了theme属性

    <s:a href="get.jsp">超链接</s:a>
    <s:form action="login" theme="simple">
      <s:textfield tooltip="name" label="姓名" name="userName" />
      <s:password tooltip="password" label="密码" name="pwd"></s:password>
      <s:textarea tooltip="content" label="备注" name="remark" cols="30" rows="3" />
      <s:file tooltip="Attachment" label="附件" name="photo" />
      <s:submit value="Login"></s:submit>
      <s:reset value="reset"></s:reset>
     </s:form>
image.png
• UI标签或者Form标签的theme属性用来指定主题。

Struts2内建了3个主题,分别是simple, xhtml, css_xhtml。
simple 主题只会将UI标签转换为普通HTML元素,不会生成其它额外内容;

xhtml主题是Struts2的默认主题,它具有如下特性:
1、 UI控件使用标准的两列表格布局。
2、将label属性转换为<label>元素并和控件关联。
3、如果某控件校验未通过,自动显示校验错误信息。
• 使用Struts UI标签的优点:
1,自动根据Action中对应的实例变量显示表单控件的值。
2,自动显示校验错误消息,无需使用<s:fielderror/>标签。
• 单选按钮组件
<s:radio list="" listKey="key" listValue="value" name=""></s:radio>

list属性指明要迭代的集合;
listKey属性指明使用list中对象的哪个属性作为选项值;
listValue属性指明使用list中对象的哪个属性作为显示内容;
value属性控制哪个项目被选中;

注意:name属性是必须的。
• 下拉列表组件
<s:select list="" headerKey=“-1“ headerValue=”-请选择-" name="" 
      listKey="key" listValue="value"></s:select>

headerKey和headerValue指明第一项的value和内容;
value属性控制当前被选中项。

• 复选框组件
<s:checkboxlist list="" listKey="key” listValue="value" name="">
 </s:checkboxlist>

示例程序:
Action类

package com.xixi.struts_demo.action;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.util.ValueStack;
import com.xixi.struts_demo.dto.MajorInfo;

public class DefaultAction extends BaseAction {
    
    private Integer majorId;
    
    private Integer[] majorIds;
    
    private String myName = "兮兮";
    
    public Integer getMajorId() {
        return majorId;
    }

    public void setMajorId(Integer majorId) {
        this.majorId = majorId;
    }

    public Integer[] getMajorIds() {
        return majorIds;
    }

    public void setMajorIds(Integer[] majorIds) {
        this.majorIds = majorIds;
    }
    
    public String getMyName() {
        return myName;
    }

    @Override
    public String execute() throws Exception {
        ValueStack vs = ActionContext.getContext().getValueStack(); 
        vs.set("myName", "周润发");
        vs.set("user",new Object(){
            public String getTestString(){
                return "李四光";
            }
        });
        
        vs.set("someValue", "<div style='color:red;'>你的名字</div>");
        vs.set("dob", new Date());
        
        List<MajorInfo> majorList = getMajorList();
        super.add2ValueStack("majorList", majorList);
        this.majorId = 102;
        this.majorIds = new Integer[]{102,104,108};
        return SUCCESS;
    }

    private List<MajorInfo> getMajorList() {
        List<MajorInfo> list = new ArrayList<MajorInfo>();
        for (int i = 0; i < 10; i++) {
            list.add(new MajorInfo(100+i, "专业"+(100+i)));
        }
        return list;
    }
}

jsp代码

      <form action="" method="post">
            <s:radio list="majorList" listKey="majorId" listValue="majorName" name="majorId"></s:radio><br/>
            
            <s:select list="majorList" listKey="marjorId" listValue="majorName" name="majorId"
                headerKey="0" headerValue="请选择你的专业"></s:select><br/>
                
            <s:checkboxlist list="majorList"  listKey="marjorId" listValue="majorName" name="majorIds"></s:checkboxlist><br/>
            <input type="submit" value="提交"/>
        </form>

相关文章

  • struts2标签

    layout: posttitle: struts2标签subtitle: struts2标...

  • Strut2-表单标签

    1、导入Struts2标签库 2、引入一些Struts2的一些css和js代码 3.使用Struts2的标签库

  • Struts2标签总结

    在这里总结一下Struts2标签: 一:常用的标签 1, if……elseif……else,用来控制选择输出的标签...

  • Struts2简介

    Struts2的配置文件和加载顺序 struts.xml配置文件的内容标签 动作类:Action Struts2中...

  • 5. Struts2标签与主题

    1.Struts标签 Struts2中定义一组新的标签库,使用struts的标签库和JSTL类似。 Struts2...

  • Struts2标签

    1、用来输出值。 value的值是OGNL表达式。如果没有设置value属性,则输出值栈栈顶对象default属性...

  • 2018-05-14

    星期一 今天做了 看spring框架视频学习标签的注入上课学习Struts2标签 内容 spring整合web项目...

  • struts2标签库----数据标签详解

    上篇文章我们介绍struts2标签库中的控制标签的基本使用和部分原理,本篇文章接着了解下标签库中有关数据标签的使用...

  • struts2标签介绍

    一、package标签 1、标签含义 类似于包,区别不同的action,要配置action,必须首先写packag...

  • Struts2 标签库

    1.1Struts2标签使用原理解疑 首先,我们能够打开struts-tags.tld 这个文件进行观察,他是St...

网友评论

      本文标题:Struts2标签

      本文链接:https://www.haomeiwen.com/subject/ueovgxtx.html