【Struts2学习笔记】8:Strut2中的控制标签,非表单标签

版权声明:本文为博主原创学习笔记,如需转载请注明来源。 https://blog.csdn.net/SHU15121856/article/details/79955254

都按书上的例子敲,控制标签只学了分支控制和循环控制,后面的也是只学常见的或者特别的。

这些标签里或多或少会用到Struts2内建的OGNL表达式。

控制标签

分支控制标签

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
    <%--相当于制定了一个值是68的变量score --%>
    <s:set name="score" value="68"/>
    <s:if test="%{#score<60}">
        不及格
    </s:if>
    <s:elseif test="%{score<80}">
        很秀
    </s:elseif>
    <s:elseif test="%{score<90}">
        陈独秀
    </s:elseif>
    <s:else>
        蒂花之秀
    </s:else>
</body>
</html>

输出:

很秀

iterator标签

用来处理循环,用着一个标签就可以实现while循环或者for循环了,实际上for循环可以完全替代while循环,while循环也可以通过加控制的方式来完全替代for循环。

下面这个例子通过指定status属性来获取每次迭代的对象,然后就能在OGNL表达式里获取到这次是奇数次还是偶数次,对表格的背景颜色进行控制。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
    <table border="1" width="200">
        <%--通过指定status属相相当于制定了循环中的循环变量 --%>
        <s:iterator value="{'LZH','is','SB'}" id="sbLZH" status="lzh">
            <%--这个if放在tr头的里面,用来根据外层奇偶次数控制其style属性的颜色值 --%>
            <tr<s:if test="#lzh.odd"> style="background-color:#def7c2"</s:if>>
                <%--第一列输出迭代器计数 --%>
                <td><s:property value="#lzh.count"/></td>
                <%--第二列输出迭代到的值 --%>
                <td><s:property value="sbLZH"/></td>
            </tr>
        </s:iterator>
    </table>
</body>
</html>

输出:
这里写图片描述

非表单标签

这类标签主要用来输出在Action中封装的消息,还是跟着书上只学两组。

actionerror标签和actionmessage标签

这两个标签可以捕获到跳到本页面的那个Action中的addActionError()addActionMessage()方法在Action实例中封装的信息。

package myAction;

import com.opensymphony.xwork2.ActionSupport;

//注意必须要继承ActionSupport类才有这两个成员方法
public class TestAction extends ActionSupport {

    @Override
    public String execute() throws Exception {
        this.addActionError("封装在Action实例中的Error信息");
        this.addActionMessage("封装在Action实例中的Message信息");
        return SUCCESS;
    }
}
<action name="test" class="myAction.TestAction">
    <result name="success">test.jsp</result>
</action>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
    <%--获取封装在Action中的Error和Message --%>
    <h1><s:actionerror/></h1>
    <h2><s:actionmessage/></h2>
</body>
</html>

输出:
这里写图片描述

tree标签和treenode标签

用来实现树形结构,记得上学期那个ChatCat的好友树就很难弄,但是在这种XML语法下树的结构就非常清晰。

注意这组标签不是struts-tags里面的,而是struts-dojo-tags里面的。需要额外添加这个略大的jar包:
这里写图片描述
并且taglib指令导进来:

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

还要在HTML的head中打入子标签:

<sx:head parseContent="true"/>

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<%@taglib prefix="sx" uri="/struts-dojo-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
<sx:head parseContent="true"/>
</head>
<body>
    <sx:tree label="上海大学" id="tree1" showRootGrid="true" showGrid="true" treeSelectedTopic="treeSelected">
        <sx:treenode label="商业互吹学院" id="chui">
            <sx:treenode label="15级" id="15chui"/>
            <sx:treenode label="16级" id="16chui"/>
        </sx:treenode>
        <sx:treenode label="互奶学院" id="milk">
            <sx:treenode label="嘉定分院" id="jd">
                <sx:treenode label="17级" id="17jd"/>
                <sx:treenode label="16级" id="16jd"/>
            </sx:treenode>
            <sx:treenode label="宝山总院" id="bs">
                <sx:treenode label="15级" id="15jd"/>
                <sx:treenode label="14级" id="14jd"/>
            </sx:treenode>
        </sx:treenode>
    </sx:tree>
</body>
</html>

输出:
这里写图片描述

阅读更多

没有更多推荐了,返回首页