<%@ 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">
<sx:head debug="false" extraLocales="en-us,nl-nl,de-de,zh_CN" />
<title>注册页面</title>
</head>
<body>
<s:form action="registAction" name="regForm">
<table width="50%" align="center">
<tr>
<th>
用户注册
</th>
</tr>
<tr>
<td>
<s:textfield label="用户名" name="username" required="true" />
</td>
</tr>
<tr>
<td>
<s:password label="密码" name="password" required="true" />
</td>
</tr>
<tr>
<td>
<s:password label="确认密码" name="verifypassword" required="true" />
</td>
</tr>
<tr>
<td>
<s:textfield label="注册邮箱" name="email" required="true" />
</td>
</tr>
<tr>
<td>
<s:radio label="性别" list="%{#{'0':'男性','1':'女性'}}" name="sex" value="'男性'"></s:radio>
</tr>
<tr>
<td>
<s:select label="住址"
list="{'西城区','东城区','朝阳区','海淀区','大兴区','丰台区','通州区','怀柔区'}"
name="address" value="'朝阳区'"></s:select>
</td>
</tr>
<tr>
<td>
<s:combobox label="职位"
list="{'Java开发工程师','前台美工','.net开发工程师','C++工程师','客服人员'}"
name="job"/>
</tr>
<tr>
<td>
<s:checkboxlist label="从哪里了解到本公司信息?" name="msgfrom"
list="{'报纸','电视','互联网','朋友介绍'}" value="'互联网'" />
</td>
</tr>
<tr>
<td>
<!-- 级联菜单标签 -->
<s:doubleselect label="业余爱好" name="type" list="{'球类', '棋类'}"
doubleName="hobby"
doubleList="top == '球类' ? {'篮球', '乒乓球','羽毛球','网球','足球'} : {'象棋', '围棋','陆战棋'}"
formName="regForm" />
</td>
</tr>
<tr>
<td>
<s:optiontransferselect label="你喜欢的书籍" name="javabook"
leftTitle="Java书籍" rightTitle="其它书籍"
list="{'Java编程思想', 'JUnit In Action', 'Java核心技术','Hibernate In Action'}"
multiple="true" headerKey="headerKey"
headerValue="------ 请选择 ------" emptyOption="true"
doubleList="{'软件工程', 'C++ Primer', '算法设计','JVM原理'}"
doubleName="otherbook" doubleHeaderKey="doubleHeaderKey"
doubleHeaderValue="------ 请选择 ------" leftDownLabel="向下移动"
leftUpLabel="向上移动" rightDownLabel="向下移动" rightUpLabel="向上移动"
addToRightLabel="向右移动" addToLeftLabel="向左移动"
addAllToRightLabel="全部右移" addAllToLeftLabel="全部左移"
selectAllLabel="全部选中" upDownOnLeftOnclick="true" />
</td>
</tr>
<tr>
<td>
<s:select label="户口所在地" name="city" value="%{'北京市'}"
list="%{'北京市'}">
<s:optgroup label="河南省"
list="%{#{'郑州':'郑州','洛阳':'洛阳','安阳':'安阳'}}" />
<s:optgroup label="山东省"
list="%{#{'青岛':'青岛','大连':'大连','烟台':'烟台'}}" />
<s:optgroup label="江西省"
list="%{#{'南昌':'南昌','九江':'九江','浔阳':'浔阳'}}" />
</s:select>
</td>
</tr>
<tr>
<td>
<sx:datetimepicker name="regdate" label="内置日期控件(基于dojo)" value="%{'today'}"
displayFormat="yyyy年MM月dd日" />
</td>
</tr>
<tr>
<td align="right">
<sx:autocompleter name="fruitlike" label="静态表单自动填充(autocomplete中文问题尚未解决)"
list="{'apple','banana','pear','grape'}" autoComplete="true" />
</td>
</tr>
<tr>
<td></td>
<td align="right">
<input type="submit" value="注册" />
</td>
</tr>
</table>
</s:form>
</body>
</html>
接收参数bean
package com.song.bean;
/**
* struts2标签元素获取
*/
import java.util.ArrayList;
import java.util.List;
public class RegistBean {
private String username;
private String password;
private String email;
private byte sex;
private String address;
private String job;
private List<String> msgfrom = new ArrayList<String>();
private String hobby;
private String[] javabook;
private String[] otherbook;
private String city;
private String regdate;
private String fruitlike;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public byte getSex() {
return sex;
}
public void setSex(byte sex) {
this.sex = sex;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public List<String> getMsgfrom() {
return msgfrom;
}
public void setMsgfrom(List<String> msgfrom) {
this.msgfrom = msgfrom;
}
public String getHobby() {
return hobby;
}
public void setHobby(String hobby) {
this.hobby = hobby;
}
public String[] getJavabook() {
return javabook;
}
public void setJavabook(String[] javabook) {
this.javabook = javabook;
}
public String[] getOtherbook() {
return otherbook;
}
public void setOtherbook(String[] otherbook) {
this.otherbook = otherbook;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getRegdate() {
return regdate;
}
public void setRegdate(String regdate) {
this.regdate = regdate;
}
public String getFruitlike() {
return fruitlike;
}
public void setFruitlike(String fruitlike) {
this.fruitlike = fruitlike;
}
}
验证规则
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
<field name="username">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>用户名不能为空!</message>
</field-validator>
</field>
<field name="password">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>密码不能为空!</message>
</field-validator>
<field-validator type="stringlength">
<param name="trim">true</param>
<param name="minLength">6</param>
<message>密码最短${minLength}位!</message>
</field-validator>
</field>
<field name="verifypassword">
<field-validator type="fieldexpression">
<param name="trim">true</param>
<!--
<param name="expression"> <![CDATA[verifypassword==password]]>
</param>
-->
<param name="expression"><![CDATA[(#parameters.password[0] == #parameters.verifypassword[0])]]></param>
<message>密码和确认密码不一致!</message>
</field-validator>
</field>
<field name="email">
<field-validator type="regex">
<param name="expression"><![CDATA[^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$]]></param>
<message>你输入的地址不是有效的Email地址!</message>
</field-validator>
</field>
</validators>
分享到:
相关推荐
在Struts2中,标签库是其核心功能之一,它们提供了丰富的功能,帮助开发者创建用户友好的界面并减少代码量。本篇文章将深入探讨Struts2中的标签,特别是Ajax标签,并附带相关的源码分析。 一、Struts2基本标签库 ...
Struts2的`<s:file>`标签用于创建表单中的文件输入字段。此外,开发者还需要考虑文件大小限制、安全性(如防止恶意文件上传)以及存储位置等问题。 总而言之,Struts2对各种文件类型的全面支持使得开发人员能够方便...
”应用,到展示如何使用Struts2的标签库来构建动态网页。此外,它可能还会讨论Maven或者Gradle构建工具的集成,以及如何利用Struts2的插件进行单元测试。 "struts2_base入门实例源代码.rar"则提供了实际的源代码...
资源名称:Struts1相关学习资料汇总资源目录:【】Struts1工作原理浅析【】struts1标签库详解【】struts1核心思想【】struts1详细配置【】Struts_in_Action_中文版【】Struts中文手册资源截图: 资源太大,传百度...
- **问题汇总**:针对Struts2开发过程中常见的问题进行总结和解答。 以上是基于文档提供的信息整理出来的Struts2学习笔记的关键知识点概览。这些内容不仅涵盖了Struts2的基本使用方法,还涉及到了一些高级特性和...
通过实际案例,可以更好地理解Struts2的使用方法,包括Action的创建、配置、控制器组件的交互以及视图的渲染。 总结,Struts2是一个强大且灵活的Java Web框架,它的优势在于无侵入式设计、拦截器、类型转换和输入...
7. 绑定值到视图的对比:Struts1 使用标准 JSP 机制把对象绑定到视图页面,而 Struts2 使用“ValueStack”技术,使标签库能够访问值,而不需要把对象和视图页面绑定在一起。 8. 类型转换的对比:Struts1 ActionForm ...
### Struts 常见错误汇总与解析 #### 1. No bean found under attribute key XXX **问题描述:** 在使用 Struts 框架进行 Java Web 开发时,经常会出现找不到对应属性键下的 Bean 的情况。这通常发生在 `...
2. **标签库**: Struts提供了丰富的标签库,如`struts-tags.jar`,包含了一系列可直接在JSP页面中使用的HTML和逻辑标签,简化了页面开发。例如,`<s:textfield>`用于创建表单字段,`<s:if>`和`s:else`用于条件判断等...
这里`2.5.x`代表你需要使用的Struts2版本号。 2. **配置web.xml**:在Web应用的WEB-INF目录下,需要编辑web.xml文件,添加Struts2的过滤器。过滤器配置如下: ```xml <filter-name>struts2 <filter-class>org...
【SSH面试题汇总】主要涉及的是Struts、Spring和Hibernate这三个流行Java EE框架的相关知识,以及MVC设计模式的理解。MVC(Model-View-Controller)模式是软件工程中的一种架构模式,它将应用程序分为三个核心组件:...
在利用mvcstruts开发的框架中我们一般会应用的struts标签的汇总
### Struts 常见错误汇总与解析 #### 一、Nobean found under attribute key XXX 在 Struts 框架中,如果在请求作用域(request scope)中查找某个 ActionForm bean 时未找到,则会抛出此异常。这通常是因为在 `...
确保在使用`<bean:message>`等标签时,对应的key在资源文件中存在,并且在`struts-config-xxx.xml`中正确配置了资源文件的路径。 ### 4. NogettermethodforpropertyXXXofbeanteacher 当JSP试图访问一个bean的属性...
- 标签通常需要与`struts-tiles`库一起使用,因为它们依赖于Struts的上下文。 - `logic`标签的属性通常为表达式语言(EL,Expression Language)表达式,允许访问请求、session或application范围内的对象。 - 标签的...