【发布时间】:2018-08-13 21:03:02
【问题描述】:
我在使用 @InitBinder 注释实现两个验证器时遇到问题。
控制器代码:
@Autowired
private SessionValidator sessionValidator;
@Autowired
private ChannelValidator channelValidator;
@InitBinder
public void initBinder(WebDataBinder binder){
binder.addValidators(sessionValidator, channelValidator);
}
@RequestMapping(method = RequestMethod.GET)
public UserInfo findBySession(
@Valid @ModelAttribute Session session,
@Valid @ModelAttribute Channel channel){
//...
}
会话验证器:
@Component
public class SessionValidator implements Validator {
@Override
public boolean supports(Class<?> aClass){
return Session.class.equals(aClass);
}
@Override
public void validate(Object o, Errors errors){
//...
}
}
频道验证器:
@Component
public class ChannelValidator implements Validator {
@Override
public boolean supports(Class<?> aClass){
return Channel.class.equals(aClass);
}
@Override
public void validate(Object o, Errors errors){
//...
}
}
我在调用控制器时收到以下异常:
Caused by: java.lang.IllegalStateException: Invalid target for Validator [com.almundo.p13n.dna.validators.ChannelValidator@4e642ee1]: Session(null, null)
有人知道怎么解决吗?提前致谢!
【问题讨论】:
标签: spring spring-mvc spring-boot custom-validators