Java 在SpringValidator中是否有只发送错误代码而不发送错误字段的方法?

Java 在SpringValidator中是否有只发送错误代码而不发送错误字段的方法?,java,spring,rest,spring-mvc,spring-validator,Java,Spring,Rest,Spring Mvc,Spring Validator,我们在spring中有一个RESTfulWebService,为了验证请求参数,我们使用SpringValidator 以下是我的验证器的外观: @Override public void validate( Object oObject, Errors oErrors ) { RequestDAO oRequest = (RequestDAO) oObject; if (Validation on FIELD 1 fails ) { oErro

我们在spring中有一个RESTfulWebService,为了验证请求参数,我们使用SpringValidator 以下是我的验证器的外观:

 @Override
public void validate( Object oObject, Errors oErrors ) 
{

    RequestDAO oRequest = (RequestDAO) oObject;

    if (Validation on FIELD 1 fails  ) 
    {
       oErrors.rejectValue( "FIELD1", ERROR CODE );
    } 
  else if ( If any other validation fails ) 
 {
        oErrors.rejectValue( "", A Different error code );
        //I just want to send the ERROR CODE here and not the name of the filed
        //IS it the correct way to do it?
    }

}
在我的异常处理程序类中,我得到验证错误并生成自定义异常:

  protected AppException convertValidionErrorToCustomException(    MethodArgumentNotValidException oMethodArgNotvalidExp ) {

    CustomException oAppExp = null;

    BindingResult oBindingResult = oMethodArgNotvalidExp.getBindingResult();
    // Get the first error associated with a field, if any.
    FieldError oFieldError = oBindingResult.getFieldError();
    // IF I DONT SENT THE NAME OF THE FIELD I GET NULL ABOVE and thus an NP exp
    String sCode = oFieldError.getCode();
    if ( StringUtils.isEmpty( sCode ) || !StringUtils.isNumeric( sCode ) )
  {

        oAppExp = new CustomException( oMethodArgNotvalidExp );

    } 
  else 
  {

        int iErrorCode = Integer.parseInt( oFieldError.getCode() );
        String sFieldName = oFieldError.getField();
        if ( !StringUtils.isEmpty( sFieldName ) ) {

            oAppExp = new CustomException( iErrorCode, sFieldName );

        } else {

            oAppExp = new CustomException( iErrorCode );
        }
    }

    return oAppExp;
}
我的问题是: 如何从验证程序类只发送错误代码而不发送文件名。另外,如何修改我的异常处理程序方法以处理以下2个场景中的异常:

  • 发送字段名和错误代码时

  • 仅发送错误代码而不发送文件名时


    • 我终于找到了一条路。我更新了异常处理程序,使其具有以下功能:

         protected CustomException convertValidionErrorToAppException( MethodArgumentNotValidException oMethodArgNotvalidExp ) {
      
          CustomException Exp = null;
      
          BindingResult oBindingResult = oMethodArgNotvalidExp.getBindingResult();
          // Get the first error associated with a field, if any.\
          if ( oBindingResult.hasFieldErrors() ) {
              Exp = processFieldError( oBindingResult, oMethodArgNotvalidExp );
      
          } else {
              Exp = processErrors( oBindingResult, oMethodArgNotvalidExp );
          }
      
          return Exp;
      }
      
      processFieldError(oBindingResult,oMethodArgNotvalidExp);方法处理所有字段错误 processErrors(oBindingResult,Omethodargontvalidexp)将处理非字段错误。方法如下所示

         protected CustomExceptionprocessErrors( BindingResult oBindingResult,     MethodArgumentNotValidException oMethodArgNotvalidExp ) {
          CustomException Exp = null;
          //Get all errors from Binding Errors
          ObjectError oError = oBindingResult.getAllErrors().get( 0 );
          String sCode = oError.getCode();
          if ( StringUtils.isEmpty( sCode ) || !StringUtils.isNumeric( sCode ) ) {
      
              Exp = new CustomException( oMethodArgNotvalidExp );
      
          } else {
              int iErrorCode = Integer.parseInt( sCode );
              Exp = new CustomException( iErrorCode );
          }
          return Exp;
      }