JavaWeb -- Struts1 动态bean, 动态校验, 动态生成javascript 表单校验
1. 动态formbean.
表单 JSP:
- <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
- <%@taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <title>My JSP '1.jsp' starting page</title>
- </head>
- <body>
- <html:errors/> <!--错误回显-->
- <html:javascript formName="UserFormBean"/> <!--动态生成javascript前端校验, onsubmit方法格式为 validate + formName (this)-->
- <html:form action="/register" onsubmit="return validateUserFormBean(this)">
- 用户名:<input type="text" name="username"><br/>
- 密码:<input type="password" name="password"><br/>
- 确认密码:<input type="password" name="password2"><br/>
- 电子邮箱:<input type="text" name="email"><br/>
- 生日:<input type="text" name="birthday"><br/>
- <input type="submit" value="注册">
- </html:form>
- </body>
- </html>
struts-config.xml,配置动态formbean 和 校验需要的配置文件
- <?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE struts-config PUBLIC
- "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
- "http://struts.apache.org/dtds/struts-config_1_3.dtd">
- <struts-config>
- <!--动态bean-->
- <form-beans>
- <form-bean name="UserFormBean" type="org.apache.struts.validator.DynaValidatorForm">
- <form-property name="username" type="java.lang.String"></form-property>
- <form-property name="password" type="java.lang.String"></form-property>
- <form-property name="password2" type="java.lang.String"></form-property>
- <form-property name="email" type="java.lang.String"></form-property>
- <form-property name="birthday" type="java.lang.String"></form-property>
- </form-bean>
- </form-beans>
- <action-mappings>
- <action path="/register"
- name="UserFormBean"
- type="cn.itcast.web.action.RegiserAction"
- input="/1.jsp">
- </action>
- </action-mappings>
- <message-resources parameter="MessageResource"></message-resources>
- <!--校验配置-->
- <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
- <set-property property="pathnames"
- value="/org/apache/struts/validator/validator-rules.xml,
- /WEB-INF/validation.xml"/>
- </plug-in>
- </struts-config>
validation.xml 具体校验要求 配置
- <?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE form-validation PUBLIC
- "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.3.0//EN"
- "http://jakarta.apache.org/commons/dtds/validator_1_3_0.dtd">
- <form-validation>
- <global>
- <!-- Custom Validator 自定义 校验器 -->
- <validator name="twofields"
- classname="examples.validator.CustomValidator"
- method="validateTwoFields"
- methodParams="java.lang.Object,
- org.apache.commons.validator.ValidatorAction,
- org.apache.commons.validator.Field,
- org.apache.struts.action.ActionMessages,
- javax.servlet.http.HttpServletRequest"
- msg="errors.twofields" />
- </global>
- <formset>
- <!-- Form for Validation example -->
- <form name="UserFormBean">
- <field property="username" depends="required,minlength,maxlength,mask">
- <arg key="用户名" resource="false" position="0" />
- <arg name="minlength" key="${var:minlength}" position="1" resource="false"/>
- <arg name="maxlength" key="${var:maxlength}" position="1" resource="false"/>
- <var>
- <var-name>minlength</var-name>
- <var-value>3</var-value>
- </var>
- <var>
- <var-name>maxlength</var-name>
- <var-value>6</var-value>
- </var>
- <var>
- <var-name>mask</var-name>
- <var-value>[A-Z]{3,6}</var-value>
- </var>
- </field>
- <field property="email" depends="email">
- <arg key="邮箱" resource="false" position="0"/>
- </field>
- <field property="birthday" depends="date">
- <arg key="prompt.birthday" position="0"/>
- </field>
- <field property="password" depends="required,minlength,twofields">
- <arg key="密码" position="0" resource="false"/>
- <arg name="minlength" key="${var:minlength}" resource="false" position="1"/>
- <arg name="twofields" key="确认密码" position="1" resource="false"/>
- <var>
- <var-name>minlength</var-name>
- <var-value>5</var-value>
- </var>
- <var>
- <var-name>secondProperty</var-name>
- <var-value>password2</var-value>
- </var>
- </field>
- </form>
- </formset>
- </form-validation>
自定义校验器: CustomValidator.java
- /**
- * A custom validator example
- *
- * @version $Rev: 471754 $ $Date: 2006-11-06 08:55:09 -0600 (Mon, 06 Nov 2006) $
- */
- public class CustomValidator {
- // ------------------------------------------------------------ Constructors
- /**
- * Constructor for CustomValidator.
- */
- public CustomValidator() {
- super();
- }
- // ---------------------------------------------------------- Public Methods
- /**
- * Example validator for comparing the equality of two fields
- *
- * http://struts.apache.org/userGuide/dev_validator.html
- * http://www.raibledesigns.com/page/rd/20030226
- */
- public static boolean validateTwoFields(
- Object bean,
- ValidatorAction va,
- Field field,
- ActionMessages errors,
- HttpServletRequest request) {
- String value =
- ValidatorUtils.getValueAsString(bean, field.getProperty());
- String property2 = field.getVarValue("secondProperty");
- String value2 = ValidatorUtils.getValueAsString(bean, property2);
- if (!GenericValidator.isBlankOrNull(value)) {
- try {
- if (!value.equals(value2)) {
- errors.add(
- field.getKey(),
- Resources.getActionMessage(request, va, field));
- return false;
- }
- } catch (Exception e) {
- errors.add(
- field.getKey(),
- Resources.getActionMessage(request, va, field));
- return false;
- }
- }
- return true;
- }
- }
获得formbean的action
- public class RegiserAction extends Action {
- @Override
- public ActionForward execute(ActionMapping mapping, ActionForm form,
- HttpServletRequest request, HttpServletResponse response)
- throws Exception {
- DynaActionForm daf = (DynaActionForm) form; //username password
- String username = daf.getString("username");
- String password = daf.getString("password");
- String email = daf.getString("email");
- System.out.println(username);
- User user = new User();
- BeanUtils.copyProperties(user, daf); //可以的
- return super.execute(mapping, form, request, response);
- }
- }
web.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app version="2.4"
- xmlns="http://java.sun.com/xml/ns/j2ee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
- http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
- <servlet>
- <servlet-name>ActionServlet</servlet-name>
- <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
- <init-param>
- <param-name>config</param-name>
- <param-value>/WEB-INF/struts-config.xml</param-value>
- </init-param>
- <load-on-startup>2</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>ActionServlet</servlet-name>
- <url-pattern>*.do</url-pattern>
- </servlet-mapping>
- <welcome-file-list>
- <welcome-file>index.jsp</welcome-file>
- </welcome-file-list>
- </web-app>
JavaWeb -- Struts1 动态bean, 动态校验, 动态生成javascript 表单校验的更多相关文章
- MVC动态生成的表单:表单元素比较多 你就这样写
MVC动态生成的表单:表单元素比较多 你就这样写: public ActionResult ShoudaanActionResult(FormCollection from,T_UserM user) ...
- JavaWeb -- Struts1 使用示例: 表单校验 防表单重复提交 表单数据封装到实体
1. struts 工作流程图 超链接 2. 入门案例 struts入门案例: 1.写一个注册页面,把请求交给 struts处理 <form action="${pageContext ...
- 10个强大的Javascript表单验证插件推荐
创建一个JavaScript表单验证插件,可以说是一个繁琐的过程,涉及到初期设计.开发与测试等等环节.实际上一个优秀的程序员不仅是技术高手,也应该是善假于外物的.本文介绍了10个不错的JavaScri ...
- JavaScript表单处理(上)
为了分担服务器处理表单的压力,JavaScript提供了一些解决方案,从而大大打破了处处依赖服务器的局面. 发文不易,转载请亲注明出处,谢谢! 一.表单介绍 在HTML中,表单是由<form& ...
- 第一百二十二节,JavaScript表单处理
JavaScript表单处理 学习要点: 1.表单介绍 2.文本框脚本 3.选择框脚本 为了分担服务器处理表单的压力,JavaScript提供了一些解决方案,从而大大打破了处处依赖服务器的局面. 一. ...
- 【JAVAWEB学习笔记】28_jqueryAjax:json数据结构、jquery的ajax操作和表单校验插件
Ajax-jqueryAjax 今天内容: 1.json数据结构(重点) 2.jquery的ajax操作(重点) 3.jquery的插件使用 一.json数据结构 1.什么是json JSON(J ...
- 15个最佳的 JavaScript 表单验证库
客户端验证在任何项目都是不够的,因为 JavaScript 可以直接忽略,人们可以提交请求到服务器. 然而这并不意味着客户端验证都没必要了,很多时候我们需要在用户提交到服务器之前给予提示.JavaSc ...
- 推荐几款很棒的 JavaScript 表单美化和验证插件
表单元素让人爱恨交加.作为网页最重要的组成部分,表单几乎无处不在,从简单的邮件订阅.登陆注册到复杂的需要多页填写的信息提交功能,表单都让开发者花费了大量的时间和精力去处理,以期实现好用又漂亮的表单功能 ...
- JavaScript表单提交四种方式
总结JavaScript表单提交四种方式 <!DOCTYPE html> <html> <head> <title>JavaScript表单提交四种方式 ...
随机推荐
- 【VUE】VUE相关学习和知识备份
一.学习资料参考 1.1.Vue.js 官网:Vue.js https://cn.vuejs.org/ 官方文档:介绍 - Vue.js https://cn.vuejs.org/v2/guide/ ...
- ubuntu首次给root用户设置密码和root用户登录设置
1 ubuntu首次给root用户设置密码 给root用户设置密码输入命令sudo passwd,然后系统会让你输入密码,这时输入的密码就是root用户的密码了,设置完成之后就可以切换root用户登录 ...
- MyBatis 从入门到熟悉.md
目录 MyBatis从入门到熟悉 MyBatis Generator MyBatis 测试 一对一 一对多 多对多 总结 参考 MyBatis从入门到熟悉 以下代码获取地址: https://gith ...
- FineReport----查询功能 的知识点
1.设置日期控件,默认当前日期 2.默认不查询 选择参数:点击查询前不显示报表内容
- 《挑战程序设计竞赛》2.3 动态规划-进阶 POJ1065 1631 3666 2392 2184(5)
POJ1065: Description There is a pile of n wooden sticks. The length and weight of each stick are kno ...
- vim_action
读取文件,显示行号 nl -a.txt brace expansion 花括号扩展 echo a{A{1,2},B{3,4}}b mkdir {2009...2011}-0{1...9} {2009. ...
- sql server always on 2014安装配置
SQL 2014 AlwaysOn 搭建 原文:SQL 2014 AlwaysOn 搭建 AlwaysOn底层依然采用Windows 故障转移群集的机制进行监测和转移,因此也需要先建立Window ...
- 在Centos上打Preempt-rt实时补丁
1.系统centos6.5,内核2.6.31.6,补丁patch-2.6.31.6-rt19.bz2,以下方式获得: wget https://www.kernel.org/pub/linux/ker ...
- jvm堆配置参数
1.-Xms初始堆大小默认物理内存的1/64(<1GB)(官方建议)2.-Xmx最大堆大小默认物理内存的1/4(<1GB)(官方建议),实际中建议不大于4GB3.一般建议设置 -Xms=- ...
- python读取/写入文件
<Python编程:从入门到实践>读书笔记 1.读取文件并且对文件内容进行打印有三种方式: with open('test.txt') as fo: for lins in fo: pri ...