struts2中的表单标签都是以s标签的方式定义的,同时,struts2为所有标签都提供了一个模板,C:\Users\180172\Desktop\struts2-core-2.2.1.1.jar\template\中的三个文件夹共同提供模板。struts2中模板的制作使用了freemark技术
主题:如果为所有的标签都提供了模板,这系列的模板就组成了主题。所有的主题都放在template文件夹下(默认情况下)

struts2 默认提供了3个主题:
simple   ----没有额外的附加行为的主题,只生成最核心的html元素,其他附加的东西,比如两列布局,label等都没有
xhtml    --1.struts2 的默认主题  ,默认主题通过strus.ui.theme常量修改
               2.生成label
               3.输出错误提示
               4.客户端校验支持     
css_xhtml.   --在xhtml增加了一些css样式,用的较少如果有需要,我们也可以针对自己的项目自定义开发主题(freemark)

如何设置主题:
1。可直接通过struts.ui.theme来设置默认主题
2.通过page/request/session/application设置主题
3.为标签设置theme属性,子标签默认使用父标签的theme属性,为子标签设定theme属性,将覆盖父标签theme属性

---表单标签:
checkbox   复选框
head    引入一些辅助的css样式单和js脚本
file   生成一个文件上传域
form
hidden
label
password
reset
submit
textarea    多行文本框
textfield   单行文本框

复杂的
checkbox/radio/select/optgroup
combobox   生成一个文本框以列表框的组合这几个标签其属性大体一致,以下是具体实例代码

    -->
<script>
function check(){
var xianshi="";
var a=document.form1.fdsfs;
alert(a.length);
for(var i=0;i<a.length;i++){
if(a[i].checked==true){
xianshi=xianshi+a[i].value;
} }
document.getElementById("xuelia").value=xianshi; }
</script>
</head>
<body>
<s:action var="xuelis" name="xuelis" namespace="/"/>
<s:form name="form1">
<s:select label="学历选择" name="af"
list="#xuelis.xueli"
listKey="id"
listValue="name">
<s:optgroup label="学历二次选择"
list="#xuelis.xueli"
listKey="id"
listValue="name"/>
</s:select>
<%-- <tr>
<td class="tdLabel"><label for="select_af" class="label">学历选择:</label></td>
<td
><select name="af" id="select_af">
<option value="1">大专</option>
<option value="2">本科</option>
<option value="3">硕士</option>
<option value="4">博士</option>
</select> --%> <s:set var="renwu" value="#{'西游记':{'孙悟空','猪八戒','沙僧'},'水浒':{'武松','林冲','鲁智深'},'三国演义':{'刘备','张飞','关羽'} }"/>
<s:doubleselect name="book" list="{'西游记','水浒'}"
 doubleList="top=='西游记'?{'孙悟空','猪八戒','沙僧'}:{'林冲','武松'}"  doubleName="waha" label="选择喜欢的人物"/> <s:doubleselect name="renwus" list="#renwu.keySet()" doubleList="#renwu[top]" doubleName="renwua" label="选择喜欢的人物"/> <s:radio label="degree" name="shabi"
list="#xuelis.xueli"
listKey="id"
listValue="name"
/>
<!-- <tr>
<td class="tdLabel"><label for="select_shabi" class="label">degree:</label></td>
<td
>
<input type="radio" name="shabi" id="select_shabi1" value="1"/><label for="select_shabi1">大专</label>
<input type="radio" name="shabi" id="select_shabi2" value="2"/><label for="select_shabi2">本科</label>
<input type="radio" name="shabi" id="select_shabi3" value="3"/><label for="select_shabi3">硕士</label>
<input type="radio" name="shabi" id="select_shabi4" value="4"/><label for="select_shabi4">博士</label>
</td>
</tr> -->
<s:textfield name="xuelia" id="xuelia"/>
<s:checkboxlist label="学历 "
name="fdsfs"
list="#xuelis.xueli"
listKey="name"
listValue="name"
onclick="check()"
/>
<!--
<tr>
<td class="tdLabel"></td>
<td
><input type="text" name="xuelia" value="" id="xuelia"/></td>
</tr> <tr>
<td class="tdLabel"><label for="select_fdsfs" class="label">学历 :</label></td>
<td
>
<input type="checkbox" name="fdsfs" value="大专" id="fdsfs-1" onclick="check()"/>
<label for="fdsfs-1" class="checkboxLabel">大专</label>
<input type="checkbox" name="fdsfs" value="本科" id="fdsfs-2" onclick="check()"/>
<label for="fdsfs-2" class="checkboxLabel">本科</label>
<input type="checkbox" name="fdsfs" value="硕士" id="fdsfs-3" onclick="check()"/>
<label for="fdsfs-3" class="checkboxLabel">硕士</label>
<input type="checkbox" name="fdsfs" value="博士" id="fdsfs-4" onclick="check()"/>
<label for="fdsfs-4" class="checkboxLabel">博士</label>
<input type="hidden" id="__multiselect_select_fdsfs" name="__multiselect_fdsfs" value="" /> </td>
</tr> -->
<s:combobox label="请选择图书"
name="book"
list="#xuelis.xueli"
listKey="id"
listValue="name"
/>
<%--
<tr>
<td class="tdLabel"><label for="select_book" class="label">请选择图书:</label></td>
<td
>
<script type="text/javascript">
function autoPopulate_select_book(targetElement) {
targetElement.form.elements['book'].value=targetElement.options[targetElement.selectedIndex].value;
}
</script>
<input type="text" name="book" value="" id="select_book"/><br />
<select onChange="autoPopulate_select_book(this);">
<option value="1">大专</option>
<option value="2">本科</option>
<option value="3">硕士</option>
<option value="4">博士</option>
</select>
</td>
</tr> --%>
</s:form>
<input type="checkbox" name="a" id="b" value="nima" onclick="check()">a
<input type="checkbox" name="a" id="b" value="hehe" onclick="check()">g
<input type="checkbox" name="a" id="b" value="shit" onclick="check()">h
<input type="checkbox" name="a" id="b" value="haha" onclick="check()">j

效果如图所示:

struts2学习笔记之表单标签的详解:s:checkbox/radio/select/optiontransferselect/doubleselect/combobox的更多相关文章

  1. [原创]java WEB学习笔记62:Struts2学习之路--表单标签:form,表单标签的属性,textfield, password, hidden,submit ,textarea ,checkbox ,list, listKey 和 listValue 属性,select ,optiongroup ,checkboxlist

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  2. [原创]java WEB学习笔记63:Struts2学习之路--表单标签 用户注册模块

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  3. SpringMVC学习系列 之 表单标签

    http://www.cnblogs.com/liukemng/p/3754211.html 本篇我们来学习Spring MVC表单标签的使用,借助于Spring MVC提供的表单标签可以让我们在视图 ...

  4. Linux防火墙iptables学习笔记(三)iptables命令详解和举例[转载]

     Linux防火墙iptables学习笔记(三)iptables命令详解和举例 2008-10-16 23:45:46 转载 网上看到这个配置讲解得还比较易懂,就转过来了,大家一起看下,希望对您工作能 ...

  5. (转)live555学习笔记10-h264 RTP传输详解(2)

    参考: 1,live555学习笔记10-h264 RTP传输详解(2) http://blog.csdn.net/niu_gao/article/details/6936108 2,H264 sps ...

  6. Bootstrap学习笔记(二) 表单

    在Bootstrap学习笔记(一) 排版的基础上继续学习Bootstrap的表单,编辑器及head内代码不变. 3-1 基础表单 单中常见的元素主要包括:文本输入框.下拉选择框.单选按钮.复选按钮.文 ...

  7. Symfony2学习笔记之表单

    对于一个Web开发者来说,处理HTML表单是一个最为普通又具挑战的任务.Symfony2集成了一个Form组件,让处理表单变的容易起来.在这一节里,我们将从基础开始创建一个复杂的表单,学习表单类库中最 ...

  8. SpringMVC学习记录(五)--表单标签

    在使用SpringMVC的时候我们能够使用Spring封装的一系列表单标签,这些标签都能够訪问到ModelMap中的内容. 以下将对这些标签一一介绍. 1.引入标签头文件 在正式介绍SpringMVC ...

  9. AngularJS 1.2.x 学习笔记(表单校验篇)

    https://my.oschina.net/cokolin/blog/526911 摘要: 本文首发于 blog.csdn.net/vipshop_ebs/article/details/39472 ...

随机推荐

  1. hihoCoder 第136周 优化延迟(二分答案+手写堆)

    题目1 : 优化延迟 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho编写了一个处理数据包的程序.程序的输入是一个包含N个数据包的序列.每个数据包根据其重要程度不同 ...

  2. topK问题解法

    topK问题的最佳解法是堆排,下面介绍用堆排来解决该问题. 堆排解决topK问题的思路,取出前K个数,最重要的就是要减少比较的次数,用堆排维护一个K大小的堆,比如一个小顶堆,则堆顶为堆中最小的值,将堆 ...

  3. 雪人(snowman)

    test1025 五子棋(fir) 依照题意模拟即可,先判是否合法,然后在判是否胜利 迷宫(maze) 折半搜素裸题 雪人(snowman) 二分+hash a1-b1=a2-b2=a3-b3 等价于 ...

  4. 计数(count)

    计数(count) 题目描述 既然是萌萌哒 visit_world 的比赛,那必然会有一道计数题啦! 考虑一个 NN个节点的二叉树,它的节点被标上了 1∼N1∼N 的编号. 并且,编号为 ii的节点在 ...

  5. mongodb学习(2)--- nodeJS与MongoDB的交互(使用mongodb/node-mongodb-native)

    转载:http://www.cnblogs.com/zhongweiv/p/node_mongodb.html 目录 简介 MongoDB安装(windows) MongoDB基本语法和操作入门(mo ...

  6. (转载--修改)使用Xcode9的Instruments检测解决iOS内存泄露

    作为一名iOS开发攻城狮,在苹果没有出ARC(自动内存管理机制)时,我们几乎有一半的开发时间都耗费在这么管理内存上.后来苹果很人性的出了ARC,虽然在很大程度上,帮助我们开发者节省了精力和时间.但是我 ...

  7. 2017-2018-2 20179204 PYTHON黑帽子 黑客与渗透测试编程之道

    python代码见码云:20179204_gege 参考博客Python黑帽子--黑客与渗透测试编程之道.关于<Python黑帽子:黑客与渗透测试编程之道>的学习笔记 第2章 网络基础 t ...

  8. 【jetty】jetty服务器的使用

    1.下载jetty服务器: http://www.eclipse.org/jetty/previousversions.html 2.下载后解压:

  9. Codeforces 920D Tanks

    题目链接 题意 有 \(n\) 个容积无限的水缸,初始时水量为\(a_1,a_2,...,a_n\),有一把容积为\(k\)的勺子,可以从一个水缸中舀水倒入另一个水缸中.问能否给出操作序列,使得最终某 ...

  10. Linux STP介绍

    1. 介绍 STP(Spanning Tree Protocol)即生成树协议,标准为IEEE802.1D-1998STP是一种二层冗余技术,利用STA算法构建一个逻辑上没有环路的树形网络拓扑结构,并 ...