通用属性
模板相关属性:
templateDir:用于指定标签使用的模板文件的目录。
theme:用于指定标签使用的主题。
template:用于指定标签使用的模板。
JavaScript相关属性:
事件属性:onclick(单击时发生)、ondbclick(双击时发生)、onmousedown(鼠标按下时发生)、onmouseup(鼠标抬起时发生)、onmouseover(鼠标移入对象时发生)、onmouseout(鼠标移出对象时发生)、onfocus(对象获得焦点时发生)、onblur(对象失去焦点时发生)、onkeypress(在键盘按键被按下并释放一个键时发生)、onkeyup(在键盘按键释放时发生)、onkeydown(在键盘按键按下时发生)、onselect(在文本框中的文本被选中时发生)和onchange(在文本框中的文本改变时发生)。
tooltip相关属性:用于为表单设置提示信息
通用属性:
cssClass:设置该表单的class属性;
cssStyle:设置该表单的style属性,使用内联的CSS样式;
title:设置表单元素的title属性;
disabled:设置表单元素的disabled属性;
label:设置表单元素的label属性;
lablePosition:设置表单元素的lable所在位置,可以接受的值为top(上面)和left(左边),默认在边;
requiredposition:定义必填标记位于label元素的位置,可以接受的值为left何right,默认在右边;
name:定义表单元素的name属性,该属性值用于与Action的属性形成对应;
required:定义是否在表单元素的label上增加必填标记(默认以*最为必填标记),设置为true时,必填
tabIndex:设置表单元素的tabindex属性;
value:设置表单元素的value属性;
1.简单表单标签
之前用过许多次,在此就不多介绍了
<s:form action="LoginAction" namespace="/login">
<s:textfield name="name" style="font_size:12px;width: 120px;" label="登录名称" />
<s:password name="pwd" style="font_size:12px;width: 120px;" label="登录密码" />
<s:textarea name="info" label="个人简介" cols="28" rows="3"></s:textarea>
<s:submit value="登 录" />
<s:reset value="重填" />
</s:form>
2.checkboxlist标签
用于根据list属性指定的集合一次创建多个复选框。如果list属性是一个Java对象或者Map对象,则需要执行该标签的listKey和listValue属性。
listKey:该属性用于指定集合元素中的某个属性作为复选框的value,如果集合元素是一个Java对象,那么就指定该Java对象的name属性作为复选框的value。
listValue:该属性用于指定集合元素中的某个属性作为复选框的标签,如果集合元素是一个Java对象,那么就指定该Java对象的name属性作为复选框的value。
如果集合元素是一个Map对象,那么就可以使用key值和value值分别代表Map对象的key和value,用来作为复选框的value。
BookService.java
public class BookService {
public Book[] getBooks() {
return new Book[]{new Book("Book1",23,1),new Book("Book2",13,2),new Book("Book3",24,3)};
}
}
<s:form>
<s:checkboxlist list="{'a','b','c'}" name="first" label="1" labelposition="top">
</s:checkboxlist>
<s:checkboxlist list="#{'a':'1','b':'2','c':'3'}" name="second"
listKet="key" listValue="value" label="2" labelposition="top">
</s:checkboxlist>
</s:form>
3.radio标签
与checkboxlist用法几乎相同,不同的是生成的为单选框。且该form表单内所有name相同的单选框都只能选一个
<s:form>
<s:radio list="{'a','b','c'}" name="first" label="1" labelposition="top"></s:radio>
<s:radio list="#{'a':'1','b':'2','c':'3'}" name="second"
listKey="key" listValue="value" label="2" labelposition="top"></s:radio>
<s:bean name="ch4.BookService" id="bs"/>
<s:radio name="books" list="#bs.books" label="3" labelposition="top"
listKey="name" listValue="name"/>
</s:form>
4.combobox标签
与checkboxlist用法几乎相同,使用该标签后生成两个元素,分别为单行文本框和下拉列表框。其中文本框的值对应请求参数,而下拉列表框用来辅助输入,并没有name属性,也不会产生请求参数。当选择下拉列表框中的一个选项后,该选项会自动出现在文本框中。该标签通过list属性所指定的集合来生成列表项。
<s:form>
<s:combobox label="图书列表" labelposition="left" size="20" maxlength="20" name="books"
list="{'a','b','c'}"/>
<s:combobox list="#{'a':'1','b':'2','c':'3'}" name="second"
listKey="key" listValue="value" label="图书列表" labelposition="left"></s:combobox>
<s:bean name="ch4.BookService" id="bs"/>
<s:combobox name="book" label="图书列表" labelposition="left"
list="#bs.books" listKey="name" listValue="name"/>
</s:form>
5.select标签
与checkboxlist用法几乎相同,生成一个下拉列表框,通过list属性所指定的集合来生成列表项。
<s:form>
<s:select label="图书列表" labelposition="left" name="books"
list="{'a','b','c'}"/>
<s:select list="#{'a':'1','b':'2','c':'3'}" name="second"
listKey="key" listValue="value" label="图书列表" labelposition="left"/>
<s:bean name="ch4.BookService" id="bs"/>
<s:select name="book" label="图书列表" labelposition="left"
list="#bs.books" listKey="name" listValue="name"/>
</s:form>
6.datetimepicker标签
用于生成一个动态日历,可以选择日期和时间
displayFormat:用于指定日期的显示格式。
displayWeeks:用于指定日历显示出星期数。
endDate:用于指定日历可以显示的最后日期。
language:用于指定日历显示的语言。
startDate:用于指定日历可以显示的开始日期。
toggleDruation:用于指定日历选择框出现和隐藏的切换时间
toggleType:用于指定日历选择框出现和隐藏的切换效果,可选择plain、wipe、explode和fade。
由于struts2.3新版本的原因,我们需要导入struts2-dojo-plugin-2.3.34.jar包,并在页面上加上:
<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
<sx:head parseContent="true" extraLocales="UTF-8"/>
<%@ 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>
<sx:head parseContent="true" extraLocales="UTF-8"/>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<s:form namespace="/user">
<sx:datetimepicker name="birthday" label="出生日期" displayFormat="yyyy/MM/dd"
language="UTF-8" toggleType="explode" weekStartsOn="0"/>
</s:form>
</body>
</html>
7.token标签
用于防止用户重复提交表单,当用户通过其他方式(例如返回按钮)返回登录界面并提交时,拦截器会进行拦截。
struts.xml
action用的是之前写的LoginAction
<action name="LoginAction" class="ch3.LoginAction" method="checkLogin">
<result name="success">/index.jsp</result>
<result name="login">/login.jsp</result>
<result name="invalid.token">/login.jsp</result>
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="token"></interceptor-ref>
</action>
login.jsp
<s:form action="LoginAction" namespace="/login">
<s:textfield name="name" style="font_size:12px;width: 120px;" label="登录名称" />
<s:password name="pwd" style="font_size:12px;width: 120px;" label="登录密码" />
<s:submit value="登 录" />
<s:reset value="重填" />
<s:token/><s:actionerror/>
</s:form>
如果没有<s:actionerror/>
则仅拦截,没有上面的错误信息