1. 动态formbean.

表单 JSP:

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <%@taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
  3.  
  4. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  5. <html>
  6. <head>
  7. <title>My JSP '1.jsp' starting page</title>
  8. </head>
  9.  
  10. <body>
  11.  
  12. <html:errors/> <!--错误回显-->
  13. <html:javascript formName="UserFormBean"/> <!--动态生成javascript前端校验, onsubmit方法格式为 validate + formName (this)-->
  14. <html:form action="/register" onsubmit="return validateUserFormBean(this)">
  15. 用户名:<input type="text" name="username"><br/>
  16. 密码:<input type="password" name="password"><br/>
  17. 确认密码:<input type="password" name="password2"><br/>
  18. 电子邮箱:<input type="text" name="email"><br/>
  19. 生日:<input type="text" name="birthday"><br/>
  20. <input type="submit" value="注册">
  21. </html:form>
  22.  
  23. </body>
  24. </html>

struts-config.xml,配置动态formbean 和 校验需要的配置文件

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2.  
  3. <!DOCTYPE struts-config PUBLIC
  4. "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
  5. "http://struts.apache.org/dtds/struts-config_1_3.dtd">
  6.  
  7. <struts-config>
  8.  
  9. <!--动态bean-->
  10. <form-beans>
  11. <form-bean name="UserFormBean" type="org.apache.struts.validator.DynaValidatorForm">
  12. <form-property name="username" type="java.lang.String"></form-property>
  13. <form-property name="password" type="java.lang.String"></form-property>
  14. <form-property name="password2" type="java.lang.String"></form-property>
  15. <form-property name="email" type="java.lang.String"></form-property>
  16. <form-property name="birthday" type="java.lang.String"></form-property>
  17. </form-bean>
  18. </form-beans>
  19.  
  20. <action-mappings>
  21.  
  22. <action path="/register"
  23. name="UserFormBean"
  24. type="cn.itcast.web.action.RegiserAction"
  25. input="/1.jsp">
  26.  
  27. </action>
  28. </action-mappings>
  29.  
  30. <message-resources parameter="MessageResource"></message-resources>
  31.  
  32. <!--校验配置-->
  33. <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
  34. <set-property property="pathnames"
  35. value="/org/apache/struts/validator/validator-rules.xml,
  36. /WEB-INF/validation.xml"/>
  37. </plug-in>
  38.  
  39. </struts-config>

validation.xml  具体校验要求 配置

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2.  
  3. <!DOCTYPE form-validation PUBLIC
  4. "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.3.0//EN"
  5. "http://jakarta.apache.org/commons/dtds/validator_1_3_0.dtd">
  6.  
  7. <form-validation>
  8.  
  9. <global>
  10. <!-- Custom Validator 自定义 校验器 -->
  11. <validator name="twofields"
  12. classname="examples.validator.CustomValidator"
  13. method="validateTwoFields"
  14. methodParams="java.lang.Object,
  15. org.apache.commons.validator.ValidatorAction,
  16. org.apache.commons.validator.Field,
  17. org.apache.struts.action.ActionMessages,
  18. javax.servlet.http.HttpServletRequest"
  19. msg="errors.twofields" />
  20. </global>
  21.  
  22. <formset>
  23. <!-- Form for Validation example -->
  24. <form name="UserFormBean">
  25.  
  26. <field property="username" depends="required,minlength,maxlength,mask">
  27. <arg key="用户名" resource="false" position="0" />
  28.  
  29. <arg name="minlength" key="${var:minlength}" position="1" resource="false"/>
  30. <arg name="maxlength" key="${var:maxlength}" position="1" resource="false"/>
  31. <var>
  32. <var-name>minlength</var-name>
  33. <var-value>3</var-value>
  34. </var>
  35. <var>
  36. <var-name>maxlength</var-name>
  37. <var-value>6</var-value>
  38. </var>
  39.  
  40. <var>
  41. <var-name>mask</var-name>
  42. <var-value>[A-Z]{3,6}</var-value>
  43. </var>
  44.  
  45. </field>
  46.  
  47. <field property="email" depends="email">
  48. <arg key="邮箱" resource="false" position="0"/>
  49. </field>
  50.  
  51. <field property="birthday" depends="date">
  52. <arg key="prompt.birthday" position="0"/>
  53. </field>
  54.  
  55. <field property="password" depends="required,minlength,twofields">
  56. <arg key="密码" position="0" resource="false"/>
  57. <arg name="minlength" key="${var:minlength}" resource="false" position="1"/>
  58. <arg name="twofields" key="确认密码" position="1" resource="false"/>
  59. <var>
  60. <var-name>minlength</var-name>
  61. <var-value>5</var-value>
  62. </var>
  63. <var>
  64. <var-name>secondProperty</var-name>
  65. <var-value>password2</var-value>
  66. </var>
  67. </field>
  68.  
  69. </form>
  70. </formset>
  71. </form-validation>

自定义校验器: CustomValidator.java

  1. /**
  2. * A custom validator example
  3. *
  4. * @version $Rev: 471754 $ $Date: 2006-11-06 08:55:09 -0600 (Mon, 06 Nov 2006) $
  5. */
  6. public class CustomValidator {
  7.  
  8. // ------------------------------------------------------------ Constructors
  9.  
  10. /**
  11. * Constructor for CustomValidator.
  12. */
  13. public CustomValidator() {
  14. super();
  15. }
  16.  
  17. // ---------------------------------------------------------- Public Methods
  18.  
  19. /**
  20. * Example validator for comparing the equality of two fields
  21. *
  22. * http://struts.apache.org/userGuide/dev_validator.html
  23. * http://www.raibledesigns.com/page/rd/20030226
  24. */
  25. public static boolean validateTwoFields(
  26. Object bean,
  27. ValidatorAction va,
  28. Field field,
  29. ActionMessages errors,
  30. HttpServletRequest request) {
  31.  
  32. String value =
  33. ValidatorUtils.getValueAsString(bean, field.getProperty());
  34. String property2 = field.getVarValue("secondProperty");
  35. String value2 = ValidatorUtils.getValueAsString(bean, property2);
  36.  
  37. if (!GenericValidator.isBlankOrNull(value)) {
  38. try {
  39. if (!value.equals(value2)) {
  40. errors.add(
  41. field.getKey(),
  42. Resources.getActionMessage(request, va, field));
  43.  
  44. return false;
  45. }
  46. } catch (Exception e) {
  47. errors.add(
  48. field.getKey(),
  49. Resources.getActionMessage(request, va, field));
  50. return false;
  51. }
  52. }
  53. return true;
  54. }
  55. }

获得formbean的action

  1. public class RegiserAction extends Action {
  2.  
  3. @Override
  4. public ActionForward execute(ActionMapping mapping, ActionForm form,
  5. HttpServletRequest request, HttpServletResponse response)
  6. throws Exception {
  7.  
  8. DynaActionForm daf = (DynaActionForm) form; //username password
  9.  
  10. String username = daf.getString("username");
  11. String password = daf.getString("password");
  12. String email = daf.getString("email");
  13. System.out.println(username);
  14.  
  15. User user = new User();
  16. BeanUtils.copyProperties(user, daf); //可以的
  17.  
  18. return super.execute(mapping, form, request, response);
  19. }
  20.  
  21. }

web.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app version="2.4"
  3. xmlns="http://java.sun.com/xml/ns/j2ee"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
  6. http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  7.  
  8. <servlet>
  9. <servlet-name>ActionServlet</servlet-name>
  10. <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
  11. <init-param>
  12. <param-name>config</param-name>
  13. <param-value>/WEB-INF/struts-config.xml</param-value>
  14. </init-param>
  15. <load-on-startup>2</load-on-startup>
  16.  
  17. </servlet>
  18.  
  19. <servlet-mapping>
  20. <servlet-name>ActionServlet</servlet-name>
  21. <url-pattern>*.do</url-pattern>
  22. </servlet-mapping>
  23.  
  24. <welcome-file-list>
  25. <welcome-file>index.jsp</welcome-file>
  26. </welcome-file-list>
  27. </web-app>

JavaWeb -- Struts1 动态bean, 动态校验, 动态生成javascript 表单校验的更多相关文章

  1. MVC动态生成的表单:表单元素比较多 你就这样写

    MVC动态生成的表单:表单元素比较多 你就这样写: public ActionResult ShoudaanActionResult(FormCollection from,T_UserM user) ...

  2. JavaWeb -- Struts1 使用示例: 表单校验 防表单重复提交 表单数据封装到实体

    1. struts 工作流程图 超链接 2. 入门案例 struts入门案例: 1.写一个注册页面,把请求交给 struts处理 <form action="${pageContext ...

  3. 10个强大的Javascript表单验证插件推荐

    创建一个JavaScript表单验证插件,可以说是一个繁琐的过程,涉及到初期设计.开发与测试等等环节.实际上一个优秀的程序员不仅是技术高手,也应该是善假于外物的.本文介绍了10个不错的JavaScri ...

  4. JavaScript表单处理(上)

    为了分担服务器处理表单的压力,JavaScript提供了一些解决方案,从而大大打破了处处依赖服务器的局面.  发文不易,转载请亲注明出处,谢谢! 一.表单介绍 在HTML中,表单是由<form& ...

  5. 第一百二十二节,JavaScript表单处理

    JavaScript表单处理 学习要点: 1.表单介绍 2.文本框脚本 3.选择框脚本 为了分担服务器处理表单的压力,JavaScript提供了一些解决方案,从而大大打破了处处依赖服务器的局面. 一. ...

  6. 【JAVAWEB学习笔记】28_jqueryAjax:json数据结构、jquery的ajax操作和表单校验插件

    Ajax-jqueryAjax 今天内容: 1.json数据结构(重点) 2.jquery的ajax操作(重点) 3.jquery的插件使用   一.json数据结构 1.什么是json JSON(J ...

  7. 15个最佳的 JavaScript 表单验证库

    客户端验证在任何项目都是不够的,因为 JavaScript 可以直接忽略,人们可以提交请求到服务器. 然而这并不意味着客户端验证都没必要了,很多时候我们需要在用户提交到服务器之前给予提示.JavaSc ...

  8. 推荐几款很棒的 JavaScript 表单美化和验证插件

    表单元素让人爱恨交加.作为网页最重要的组成部分,表单几乎无处不在,从简单的邮件订阅.登陆注册到复杂的需要多页填写的信息提交功能,表单都让开发者花费了大量的时间和精力去处理,以期实现好用又漂亮的表单功能 ...

  9. JavaScript表单提交四种方式

    总结JavaScript表单提交四种方式 <!DOCTYPE html> <html> <head> <title>JavaScript表单提交四种方式 ...

随机推荐

  1. 【VUE】VUE相关学习和知识备份

    一.学习资料参考 1.1.Vue.js 官网:Vue.js https://cn.vuejs.org/ 官方文档:介绍 - Vue.js https://cn.vuejs.org/v2/guide/ ...

  2. ubuntu首次给root用户设置密码和root用户登录设置

    1 ubuntu首次给root用户设置密码 给root用户设置密码输入命令sudo passwd,然后系统会让你输入密码,这时输入的密码就是root用户的密码了,设置完成之后就可以切换root用户登录 ...

  3. MyBatis 从入门到熟悉.md

    目录 MyBatis从入门到熟悉 MyBatis Generator MyBatis 测试 一对一 一对多 多对多 总结 参考 MyBatis从入门到熟悉 以下代码获取地址: https://gith ...

  4. FineReport----查询功能 的知识点

    1.设置日期控件,默认当前日期 2.默认不查询 选择参数:点击查询前不显示报表内容

  5. 《挑战程序设计竞赛》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 ...

  6. vim_action

    读取文件,显示行号 nl -a.txt brace expansion 花括号扩展 echo a{A{1,2},B{3,4}}b mkdir {2009...2011}-0{1...9} {2009. ...

  7. sql server always on 2014安装配置

    SQL 2014 AlwaysOn 搭建   原文:SQL 2014 AlwaysOn 搭建 AlwaysOn底层依然采用Windows 故障转移群集的机制进行监测和转移,因此也需要先建立Window ...

  8. 在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 ...

  9. jvm堆配置参数

    1.-Xms初始堆大小默认物理内存的1/64(<1GB)(官方建议)2.-Xmx最大堆大小默认物理内存的1/4(<1GB)(官方建议),实际中建议不大于4GB3.一般建议设置 -Xms=- ...

  10. python读取/写入文件

    <Python编程:从入门到实践>读书笔记 1.读取文件并且对文件内容进行打印有三种方式: with open('test.txt') as fo: for lins in fo: pri ...