【问题标题】:spring jsp error弹簧jsp错误
【发布时间】:2011-07-25 12:56:17
【问题描述】:

我正在尝试使用 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 类 [pachet.dbo.User] 的无效属性“无效”:Bean 属性“无效”不可读或具有无效的 getter 方法:getter 的返回类型是否匹配setter 的参数类型?

如果我删除该行:

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

一行

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

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

【问题讨论】:

  • 是的,大神们,预览窗格是不可见的吗?
  • 不,不是,我只是编辑了消息。对不起。
  • 如果某个答案对您有用,请将其标记为已接受。如果它有帮助但答案不同 - 添加您自己的答案并接受它。

标签: jsp spring-mvc


【解决方案1】:

拒绝有两种选择:

  • 拒绝特定字段(字段错误)
  • 拒绝整个提交(全局错误)

你把这两个弄乱了:

  • reject(..) 注册一个全局错误,rejectValue(..) 注册一个字段错误。
  • &lt;form:error&gt;path 属性应该是通过模型属性字段的路径。您显然没有 invalid 模型属性。你的是user

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

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

并且拥有:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-31
    • 2013-12-06
    • 2012-12-22
    • 2012-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-13
    相关资源
    最近更新 更多