• Struts标签简介:

Struts2标签库提供了主题、模板支持,极大地简化了视图页面的编写,而且,struts2的主题、模板都提供了很好的扩展性,实现了更好的代码复用。
Struts2允许在页面中使用自定义组件,这完全能满足项目中页面显示复杂,多变的需求。
Struts2的标签库有一个巨大的改进之处,struts2标签库的标签不依赖于任何表现层技术,也就是说strtus2提供了大部分标签,可以在各种表现技术中使用。
包括最常用的jsp页面,也可以说Velocity和FreeMarker等模板技术中的使用。

  •  Struts标签分类:

   1.用户界面标签(UI标签):主要用来生成HTML元素的标签。

(1)表单标签:主要用于生成HTML页面的FORM元素,以及普通表单元素的标签。

(2)非表单标签:主要用于生成页面上的tree,Tab页等。

   2.非用户界面标签(非UI标签):主要用于数据访问,逻辑控制。

(1)数据访问标签:主要包含用于输出值栈(ValueStack)中的值,完成国际化等功能的标签。

(2)流程控制标签:主要包含用于实现分支,循环等流程控制的标签。

   3.AJAX标签:用于支持Ajax效果

  • 使用前准备:

 使用时需要在jsp页面中引入标签:

<%@ taglib prefix="s" uri="/struts-tags"%>

需要在web.xml中添加使用struts的配置信息。

  • 标签的使用:

1、<s:property/>标签:用来输出一个值栈属性值

名字 类型 默认值 说明
default String   可选,若value值为null或者没有给定,将显示该属性值
escape boolean true 可选,是否要对html特殊字符进行转义
value String <来自栈顶对象> 将要显示的值

 index.jsp:

<a href="strutstags.action?name=hello name">send parameter link</a>

comon-tags.jsp

    s:property:打印对象栈中的属性值<br>
    <s:property value="tagName"></s:property><br>
    map栈:对于map栈,打印request,session,application的某个属性值或者某个请求参数的值。<br>
    <s:property value="#session.date"></s:property><br>
    <s:property value="#parameters.name[0]"></s:property><br>

struts.xml

<action name="strutstags" class="com.dx.struts2.StrutsTags" method="test">
    <result name="test">/comon-tags.jsp</result>
</action>

SturtsTags.java action类:

/**
 * @author Administrator
 *
 */
package com.dx.struts2;

import java.util.Date;
import java.util.Map;

import org.apache.struts2.interceptor.SessionAware;

public class StrutsTags implements SessionAware{
    private String tagName;
    
    public String getTagName() {
        return tagName;
    }

    public void setTagName(String tagName) {
        this.tagName = tagName;
    }

    public String test(){
        this.tagName="Hello Struts-tags";
        this.session.put("date", new Date());
        
        return "test";
    }

    private Map<String,Object> session;
    @Override
    public void setSession(Map<String, Object> session) {
        // TODO Auto-generated method stub
        this.session=session;
    }
}

输出结果:

s:property:打印对象栈中的属性值
Hello Struts-tags
map栈:对于map栈,打印request,session,application的某个属性值或者某个请求参数的值。
17-3-20
hello name

2、url标签用来动态地创建一个URL

名字 类型 默认值 说明
action String   可选,指定生成的url为哪个action
anchor String   可选,指定被创建的url的链接锚点
encode Boolean true 可选,是否对参数进行编码
escapeAmp Boolean true 可选,是否要对“&”字符进行转义
includeContext Boolean true 可选,是否要把当前的上下文包括进来
includeParams String get 可选,指定是否包含请求参数,可以取3个值之一:one/get/all
method String   可选,指定action的方法,当用action属性来生成url是,如果指定该属性,url将链接到指定的action的方法上。
namespace String   可选,指定url的命名空间
portletMode String   可选,指定结果页面的portlet模式
protletUrlType String   可选,指定将被创建的URL是一个protlet例程,还是action URL
schema String   可选,指定使用什么协议:http,https
value String   可选,指定将生成的url值(如果新建URL的不是一个action的话)
var String   可选,指定用来被压入ContextMap中的键值
windowState String   可选,当用在一个portlet环境时,用来指定portlet的窗口状态

 comon-tags.jsp

s:url 创建一个url地址<br>
    <s:url value="/helloValue" var="url1">
        <!-- 对于Value值会自动动态赋值 -->
        <s:param name="tagInteger" value="111"/>
    </s:url>
    ${url1}<br>
    <s:url value="/helloValue" var="url2">
        <!-- 对于Value值会自动的进行OGNL解析 -->
        <s:param name="tagInteger" value="tagInteger"/>
    </s:url>
    ${url2}<br>
    <s:url value="/helloValue" var="url3">
        <!-- 对于Value值会自动的进行OGNL解析,若不希望进行解析,则需要使用单引号引着 -->
        <s:param name="tagInteger" value="'abc'"/>
    </s:url>
    ${url3}<br>
    <s:url action="helloAction" namespace="/hellonamespace" method="save" var="url4">
        <s:param name="tagInteger" value="'abcde'"/>
    </s:url>
    ${url4}<br>
    <s:url value="/testUrl" var="url5" includeParams="get">
    </s:url>
    ${url5}<br>
    <!-- post方式提交的参数 -->    
    <s:url value="/testUrl" var="url6" includeParams="all">
    </s:url>
    ${url6}<br>

备注:上边的s:param 中也支持ognl写法比如:

<s:url value="/testUrl" var="url7">
      <s:param name="date" value="#session.date"></s:param>
</s:url>
<br>

index.jsp

<s:form action="strutstags.action" method="post">
        product name: 
        <input name="productName" />
        <br />
        product description: 
        <input name="productDesc" />
        <br />
        product price: 
        <input name="productPrice" />
        <br />
        <s:submit value="提交"></s:submit>
    </s:form>
    <br>
    <a href="strutstags.action?name=hello name">send parameter link</a>

ComonTags.java

/**
 * @author Administrator
 *
 */
package com.dx.struts2;

import java.util.Date;
import java.util.Map;

import org.apache.struts2.interceptor.SessionAware;

public class StrutsTags implements SessionAware{
    private Integer tagInteger;
    private String tagName;
    
    public String getTagName() {
        return tagName;
    }

    public void setTagName(String tagName) {
        this.tagName = tagName;
    }
    
    public Integer getTagInteger() {
        return tagInteger;
    }

    public void setTagInteger(Integer tagInteger) {
        this.tagInteger = tagInteger;
    }


    public String test(){
        this.tagName="Hello Struts-tags";
        this.tagInteger=8888;
        this.session.put("date", new Date());
        
        return "test";
    }

    private Map<String,Object> session;
    @Override
    public void setSession(Map<String, Object> session) {
        // TODO Auto-generated method stub
        this.session=session;
    }
}
View Code

相关文章: