【Struts2学习笔记】9:checkboxlist表单标签与其使用Map构造时的提交性质

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

Struts2的表单标签书上讲的比较多,单独拿出来学一下,虽然现在都可以用一些更好看的HTML5框架。

表单标签是这本书关于Struts2的最后一些知识(除了暂时被我搁置的OGNL和值栈),在学习表单标签的时候顺便练习一下前面学的Struts2相关的使用吧。

checkboxlist标签

这个标签相当于生成多个HTML的<checkbox>标签,在这里练习一下表单的提交和经过Action的处理,并指定一个非默认的命名空间。当<checkboxlist>使用Map创建一系列<checkbox>时需要特别注意外显内涵

test.jsp

<%@ 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>
    <%--这里指定了action的名称为test,不能写test.action!这部分工作在Struts2里由框架自己来做--%>
    <%--这里给出这个action所在的命名空间,否则默认会去查找默认命名空间--%>
    <s:form action="test" namespace="/lzh">
        <%--相当于生成多个checkbox,name用来给提交的内容作键,list指定一系列checkbox的外显和内涵--%>
        <%--外显给用户看到的,内涵就是提交出去的值,这里写成集合时外显=内涵--%>
        <s:checkboxlist name="pay" list="{'支付宝','微信支付','朋友代付'}" />
        <br /><br />
        <%--这里写成Map时指定了key为内涵,value为外显--%>
        <s:checkboxlist name="key-val-1" list="#{'key1':'val1','key2':'val2','key3':'val3'}" listKey="key" listValue="value" />
        <br /><br />
        <%--反转!这里写成Map时指定了key为外显,value为内涵--%>
        <s:checkboxlist name="key-val-2" list="#{'key1':'val1','key2':'val2','key3':'val3'}" listKey="value" listValue="key" />
        <br /><br />
        <s:submit value="提交" />
    </s:form>
</body>
</html>

struts.xml

在这里的包中指明了命名空间为/lzh,那么期内所述的所有的页面默认从/lzh开始,所以show.jsp需要加个/显式声明在根目录。

...
<package name="default" namespace="/lzh" extends="struts-default">
    ...
    <action name="test" class="myAction.TestAction">
        <result name="success">/show.jsp</result>
    </action>
    ...
</package>
...

show.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.util.*"%>
<!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>
<%
    request.setCharacterEncoding("UTF-8");

    //表单展示给用户的是"外显",在这里获取到的是表单提交的"内涵"

    String[] t1=request.getParameterValues("pay");
    out.print("<h1>第一个:"+Arrays.toString(t1)+"<h1>");
%>
    <br/>
<%
    String[] t2=request.getParameterValues("key-val-1");
    out.print("<h1>第二个:"+Arrays.toString(t2)+"<h1>");
%>
    <br/>
<%
    String[] t3=request.getParameterValues("key-val-2");
    out.print("<h1>第三个:"+Arrays.toString(t3)+"<h1>");
%>
</body>
</html>

运行结果

这里写图片描述

这里写图片描述

验证测试

如果将全部指定为value和全部指定为key时:

...
<%--这里写成Map时指定了key为内涵,key为外显--%>
<s:checkboxlist name="key-val-1" list="#{'key1':'val1','key2':'val2','key3':'val3'}" listKey="key" listValue="key" />
<br /><br />
<%--这里写成Map时指定了value为外显,value为内涵--%>
<s:checkboxlist name="key-val-2" list="#{'key1':'val1','key2':'val2','key3':'val3'}" listKey="value" listValue="value" />
...

这里写图片描述

这里写图片描述

阅读更多

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