【问题标题】:Server Side Validation using Spring Web MVC validator class使用 Spring Web MVC 验证器类的服务器端验证
【发布时间】:2009-11-03 07:20:10
【问题描述】:

我正在使用 Spring Web MVC、Hibernate 开发应用程序。

现在,我的登录页面配置如下:

<bean name="/uservalidate.htm" class="UserValidateFormController">
        <property name="sessionForm" value="true"/>
        <property name="commandName" value="User"/>
        <property name="commandClass" value="User"/>
        <property name="formView" value="login"/>
        <property name="userSecurityProcessor" ref="IUserSecurityProcessor"/>
         <property name="validator">
            <bean class="LoginValidator"/>
        </property>
        <property name="successView" value="layout.jsp"/>

现在,在从登录页面提交后,控件转到验证器类,即 LoginValidator..

但是,在那堂课上,我没有得到我的 userSecurityProcessor 的引用,它给了我服务器端数据..

任何人都可以建议,我如何在我的验证器类中检查用户名和密码..?

提前谢谢..

【问题讨论】:

    标签: java spring spring-mvc


    【解决方案1】:

    创建一个 LoginValidator 实例作为单独的 bean。在您的 LoginValidator 中,添加一个 userSecurityProcessor 属性。然后在您的配置文件中注入对 IUserSecurityProcessor 实例的引用,就像您在上面所做的那样。所以是这样的:

    <bean name="loginValidator" class="LoginValidator">
    <property name="userSecurityProcessor" ref="IUserSecurityProcessor"/>
    </bean>
    

    那就换

    <bean name="/uservalidate.htm" class="UserValidateFormController">
        <property name="sessionForm" value="true"/>
        <property name="commandName" value="User"/>
        <property name="commandClass" value="User"/>
        <property name="formView" value="login"/>
        <property name="userSecurityProcessor" ref="IUserSecurityProcessor"/>
         <property name="validator">
            <bean class="LoginValidator"/>
        </property>
        <property name="successView" value="layout.jsp"/>
    

    <bean name="/uservalidate.htm" class="UserValidateFormController">
        <property name="sessionForm" value="true"/>
        <property name="commandName" value="User"/>
        <property name="commandClass" value="User"/>
        <property name="formView" value="login"/>
        <property name="userSecurityProcessor" ref="IUserSecurityProcessor"/>
         <property name="validator" ref = "loginValidator"/>
        <property name="successView" value="layout.jsp"/>
    

    【讨论】:

      【解决方案2】:

      您无法在验证器中获得userSecurityProcessor。您将获得的唯一对象是commandObject。你的情况是User

      但如果你需要它,那么你必须在 Validator 中绑定它

      <bean id="myValidator" class="LoginValidator">
          <property name="userSecurityProcessor" ref="IUserSecurityProcessor"/>
      </bean>
      

      现在,将此验证器与您的表单绑定。

      【讨论】:

        【解决方案3】:

        公共无效验证(对象目标,错误错误){ 用户用户=(用户)目标; 字符串用户名 = user.getUsername(); 字符串密码 = user.getPassword(); ………… }

        【讨论】:

        • 这个问题暗示需要 UserSecurityProcessor 来验证用户名和密码(这对我来说似乎是一个好方法)。
        • Maniganda Prakash :这不是我在我的问题中提到的......我已经明确指定如何在我的 Validator 类中获取 userSecurityProcessor bean 的引用...... bpapa 和 Rakesh 的 ans Juyal是完美的..
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-01-28
        • 1970-01-01
        • 1970-01-01
        • 2014-11-13
        • 2012-03-03
        • 2015-03-06
        • 2011-11-11
        相关资源
        最近更新 更多