`
gstarwd
  • 浏览: 1536179 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java.lang.NoSuchMethodException

阅读更多

关键字: validator

下面将介绍如何在SSH框架中使用Validator框架,Validator框架采用基于xml文件来配置验证规则,它主要依赖两个jar包:commons-validator-1.3.0.jar和oro-2.0.8.jar,要在SSH使用Validator框架,必须把这两个jar包引用进来,其实Struts框架已包含这两个jar包,所以我们不用再单独引入了。
       要在SSH框架中使用Validator,更确切的说是在Struts框架中使用,可以采用插件机制把Validator加入到框架,这需要修改原来的struts-config.xml文件,增加配置ValidatorPlugIn插件,代码如下:
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames" value="/org/apache/struts/validator/validator-rules.xml,
/WEB-INF/validation.xml" />
      <set-property property="stopOnFirstError" value="true" />
 </plug-in>这样当应用启动时,Struts框架就会加载ValidatorPlugIn插件。
validator-rules.xml文件是Validator框架自带的,它定义了一些常有的校验规则,而validation.xml是我们自己定义的,它针对某个应用,内容如下:
   
<?xml version="1.0" encoding="iso-8859-1"?>
<!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>  
 <formset>
    <form name="registerForm">
      <field property="register.username" depends="required">     
        <arg key="register.username" position="0"/>     
      </field>
      <field property="register.password" depends="required,minlength">     
        <arg key="register.password" position="0"/>
        <arg name="minlength" key="${var:minlength}" resource="false" position="1"/>
         <var>
          <var-name>minlength</var-name>
          <var-value>6</var-value>
        </var>    
      </field>
      <field property="register.email" depends="required,email">     
        <arg key="register.email" position="0"/>     
      </field>      
    </form>  
 </formset>
</form-validation>
 

form元素的name属性指定要进行验证的表单,field元素的property属性指定要验证属性,depends定义了验证方式,在这里,我们定义了username属性不能为空,password属性不能为空,并且最小长度不能小于6,email属性必须是合法的邮件地址。定义验证方式之后,我们还必须修改资源文件registermessages.properties,增加以下内容:


# Errors
errors.header=<h3><fontcolor="red">ValidationError</font></h3>Youmustcorrectthefollowingerror(s)beforeproceeding:
errors.required={0}isrequired.
errors.minlength={0}cannotbelessthan{1}characters.
errors.email={0}isaninvalide-mailaddress.这资源文件中{0}对应着<arg key="" position="0"/>,{1}对应着<arg key="" position="1"/>,以此类推,如果有验证错误产生,将用key的值替换{n}
 
此外,我们还要修改struts-config.xml文件,修改内容见粗体:

//把原来的DynaActionForm 改为DynaValidatorForm
<form-beans>
       <form-bean name="registerForm"
           type="org.apache.struts.validator.DynaValidatorForm">
           <form-property name="register" type="test.register.entity.Register" />       
       </form-bean>
    </form-beans>
//把原来的validate="false"改为validate="true"
<action-mappings>
       <action name="registerForm" path="/register" scope="request"
           type="test.register.action.RegisterAction" validate="true"
           input="/register.jsp">
           <forward name="success" path="/registerSuccess.jsp" />
       </action>
    </action-mappings>
修改错误显示的样式,我们在register.jsp中,替换原来<html/errors>为
<logic:messagesPresent>
   <bean:message key="errors.header"/>
   <ul>
   <html:messages id="error">
      <li><bean:write name="error"/></li>
   </html:messages>
   </ul><hr />
</logic:messagesPresent>
注意在页面上加入
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>

分享到:
评论

相关推荐

    java.lang.NoSuchMethodException: .getPortClassMap()

    在Java编程中,`java.lang.NoSuchMethodException` 是一个常见的运行时异常,它表示尝试调用一个不存在的方法。这个异常通常发生在动态方法调用或反射操作中。在给出的标题 "java.lang.NoSuchMethodException: ....

    Java上传文件错误java.lang.NoSuchMethodException的解决办法

    在Java编程中,`java.lang.NoSuchMethodException`异常通常表明在运行时尝试调用一个不存在的方法。这个错误在上传文件时出现,可能是由于在控制器方法的签名与前端发送请求时的参数不匹配导致的。在描述中提到的...

    java.lang.NoSuchMethodException: com.sun.proxy.$Proxy58.list错误解决办法

    Java中的`java.lang.NoSuchMethodException`异常通常表明在运行时尝试调用一个不存在的方法。这个错误通常发生在动态代理、反射或者其他需要在运行时查找或调用特定方法的场景。在这个特定的问题中,错误提示是`java...

    java 请求的方法不存在(NoSuchMethodException)

    在Java编程中,`NoSuchMethodException` 是一个常见的运行时异常,它发生在尝试调用一个不存在的方法时。这个异常属于`java.lang`包,通常在动态方法调用或反射操作时抛出。当我们试图通过对象实例或类来执行一个在...

    java.lang.NoSuchMethodException(解决方案).md

    项目中碰到的,记录一下解决方案

    Java 异常java.lang.NoSuchFieldException解决方案

    在Java编程中,`java.lang.NoSuchFieldException`是运行时异常的一种,通常发生在尝试访问或操作一个类的字段,但该字段在指定的类或其任何超类中不存在时。这个异常表明在编译期间可能存在的字段在运行时无法找到,...

    java 反射 报错 no such method exception

    然而,当开发者尝试使用反射调用一个不存在的方法时,便会遇到`java.lang.NoSuchMethodException`异常。本文将深入探讨此异常,特别是它在服务器端Java应用中的常见场景——例如Struts框架——并提供详细的解决方案...

    mybatis-通用Mapper-逆向工程-代码生成工具

    MyBatis-通用Mapper通过逆向工程(Reverse Engineering)和代码生成工具,能够自动生成与数据库表相关的Java实体类、Mapper接口和Mapper XML配置文件,极大地提高了开发效率。下面我们将深入探讨这个工具的使用和...

    java异常类型.txt

    4. **`java.lang.NoSuchMethodException`** - 当试图通过反射调用不存在的方法时抛出此异常。 5. **`java.io.FileNotFoundException`** - 尝试打开不存在的文件时抛出此异常。 ### 非检查性异常 (Unchecked ...

    java常见异常.pdf

    11. **java.lang.NoSuchMethodException**: 当试图调用一个不存在的方法时,抛出此异常。检查方法名、参数列表和返回类型是否与实际方法匹配。 12. **java.lang.AbstractMethodError**: 当实现接口或继承抽象类的类...

    JAVA常见异常解析,面试用

    - **java.lang.NoSuchMethodException**:当试图调用不存在的方法时抛出。 理解并能有效地处理这些异常对于编写健壮的Java程序至关重要。Java API文档提供了每个异常的详细描述和用法,是开发者解决问题的宝贵资源...

    常见的java异常.pdf

    9. **`java.lang.NoSuchMethodException`**:当尝试调用一个不存在的方法时抛出。确保方法签名正确,类路径和类加载器设置无误。 除了上述异常,还有许多其他类型的异常,如`ClassNotFoundException`、`...

    JAVA常见异常解析

    11. **java.lang.NoSuchMethodException**: 当试图调用一个不存在的方法时,会抛出此异常。检查方法名、参数列表以及类的API文档,确保方法确实存在。 12. **java.lang.AbstractMethodError**、**java.lang....

    JAVA常见的错误

    java.lang.NullPointerException 是一种常见的错误,发生在程序中调用了未经初始化的对象或不存在的对象时。例如,在创建图片或调用数组时,如果图片未经初始化或数组元素未经初始化,就会出现该错误。解决方法是...

    Java的异常类

    - **`java.lang.NoSuchMethodException`**:方法未找到异常。 #### 三、总结 异常处理对于编写健壮和可靠的Java应用程序至关重要。理解不同类型的异常及其触发条件可以帮助开发者更好地设计和维护代码。此外,...

    Java异常大全

    - **`java.lang.NoSuchMethodException`**:当反射调用不存在的方法时抛出。 ### 运行时异常 除了上述提到的检查性异常之外,还有一些不需显式捕获的运行时异常,例如: - **`java.lang.AssertionError`**:断言...

Global site tag (gtag.js) - Google Analytics