首页 文章

spring jsp错误

提问于
浏览
0

我正在尝试使用Spring MVC创建一个简单的登录表单 . 我应该说我是新手 . 我的想法是我试图验证表单(使用实现Validator接口的类),如果出现问题,则打印错误 .

验证方法是:

public void validate(Object target, Errors errors) 
{
    ValidationUtils.rejectIfEmptyOrWhitespace(errors, "username", "required.username","Va rugam introduceti un nume de utilizator!");
    ValidationUtils.rejectIfEmptyOrWhitespace(errors, "parola", "required.parola","Va rugam introduceti o parola!");


      User user= (User) target;
      System.out.println(" a:"+user.getUsername()+" b:"+user.getParola());

     User u=userDAO.findByUsername(user.getUsername());


    if(u == null)
    {
        errors.reject("invalid.username","Nume utilizator incorect!");
        //System.out.println("NULL");
    }
    else if(!u.getParola().equals(user.getParola()))
    {
        errors.reject("invalid.parola","Parola incorecta!");


    }
}

问题出在我的jsp页面上:

<form:form  method="POST" commandName="user" >
<form:errors path="*" cssClass="error" />
    <table>
        <tr>
            <td>Username :</td>
            <td><form:input path="username" /></td>
            <td><form:errors path="username" cssClass="error" /></td>
                        <td><form:errors path="invalid.username" cssClass="error" /></td>
        </tr>
        <tr>
            <td>Password :</td>
            <td><form:password path="parola" /></td>
            <td><form:errors path="parola" cssClass="error" /></td>
        </tr>
        <tr>
            <td colspan="2"><input type="submit" value="Login"></td>
        </tr>
    </table>
</form:form>

如果我尝试运行此操作,我会收到错误消息:

org.springframework.beans.NotReadablePropertyException:bean类的无效属性'invalid'[pachet.dbo.User]:Bean属性'invalid'不可读或getter方法无效:getter的返回类型是否与参数匹配二传手的类型?

如果我删除该行:

<td><form:errors path="invalid.username" cssClass="error" /></td>

这条线

<form:errors path="*" cssClass="error" />

显示“invalid.username”错误,所以错误存在..可能路径不对?

1 回答

  • 0

    拒绝有两种选择:

    • 拒绝特定字段(字段错误)

    • 拒绝整个提交(全局错误)

    你搞乱了两个:

    • reject(..) 注册一个全局错误, rejectValue(..) 注册一个字段错误 .

    • <form:error>path 属性应该是通过model属性字段的路径 . 你显然没有 invalid 模型属性 . 你的是 user

    解决这个问题的方法是使用:

    errors.rejectValue("username", "invalid.username", "....");
    

    并有:

    <form:error path="username" .. />
    

相关问题