springMVC中bindingResult报java.lang.NullPointerException?

发布于 2022-09-11 17:11:36 字数 2755 浏览 11 评论 0

问题描述

tomcat下部署项目a和b,tomcat先部署a,后部署b。
两个项目分别使用LoginController中的login完成登录,其中xtuser使用@Validated完成前端传入参数userid的校验,a项目可以校验通过,b项目校验时bindingResult报错:Property 'userId' threw exception; nested exception is java.lang.NullPointerException;

但是单独部署b项目,校验又不出任何问题,求大神指点?

相关代码

// LoginController.java

@RequestMapping(value="/login", method = RequestMethod.GET)
public void login(    @Validated({IXtLoginGroup.class}) XtUser xtUser,BindingResult bindingResult
                    ,@RequestParam(value ="token_index", required = true)String token_index
                    , HttpServletRequest request,HttpServletResponse response) throws Exception {
    if(bindingResult.hasFieldErrors()){
        String messageStr=ExceptionMessager.extractMessagesFromExceptionList(bindingResult);
        try {
            Map map=new HashMap();
            map.put("code", 0);//1为正常,0为错误
            map.put("message", "fault");
            Map childMap=new HashMap();
            childMap.put("title", "服务端校验错误");
            childMap.put("errorMsg",messageStr);
            map.put("data",childMap);
            System.out.println( JsonTool.Obj2Json(map));
            ResponseUtil.write(response, JsonTool.Obj2Json(map));
            return;
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

//XtUser.java

public class XtUser implements java.io.Serializable {
    
    private static final long serialVersionUID = 1L;
    
    @NotEmpty(message="用户账号{notNull}",groups={IXtUserGroup.class,IXtLoginGroup.class})
    private String userId;

}

//spring相关配置

<!-- 默认的注解映射的支持  --> 
<mvc:annotation-driven validator="validator" conversion-service="conversion-service" />

<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
    <property name="providerClass"  value="org.hibernate.validator.HibernateValidator"/>
    <!--不设置则默认为classpath下的 ValidationMessages.properties -->
    <property name="validationMessageSource" ref="validatemessageSource"/>
</bean>
<bean id="conversion-service" class="org.springframework.format.support.FormattingConversionServiceFactoryBean" />
<bean id="validatemessageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">  
    <property name="basename" value="classpath:validatemessages"/>  
    <!-- <property name="useCodeAsDefaultMessage" value="true" /> -->
    <property name="defaultEncoding" value="utf-8" /> 
    <property name="cacheSeconds" value="120"/>  
</bean>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一个人的夜不怕黑 2022-09-18 17:11:36
public void setUserId(String userId) throws Exception {
    this.userId = userId;
    //加密userId,作为界面返回controller的定位参数
    
    this.userId_encoded=SM2Util.encrypt(userId);
    System.out.println("***********"+userId);
    //this.userId_encoded=userId;
}

由于SM2Util错误使用了静态块生成公私钥,导致b项目中公私钥为空,entity中setUserId下SM2Util.encrypt()方法没有成功执行完成,导致数据绑定报错!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文