【Web开发】Struts2标签使用——表单UI标签

Struts2标签

通用属性

模板相关属性:
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>

checkboxlist标签测试

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>

radio标签测试

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>

combobox标签测试

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>

select标签测试

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>

datetimepicker标签测试

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>

token标签测试
如果没有<s:actionerror/>则仅拦截,没有上面的错误信息

猜你喜欢

转载自blog.csdn.net/tjj1998/article/details/80552188