Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
2
respuestas

porque me marca error

hola por alguna razon me marca que el paron no coinside, saben que puede estar pasando, empeso de la nada. porfas hechenme una mano

esto sale en la consola Resolved [org.springframework.web.bind.MethodArgumentNotValidException: Validation failed for argument [0] in public void med.voll.api.controller.MedicoController.registrarMedico(med.voll.api.medico.DatosRegistroMedicoDTO): [Field error in object 'datosRegistroMedicoDTO' on field 'documento': rejected value [123456]; codes [Pattern.datosRegistroMedicoDTO.documento,Pattern.documento,Pattern.java.lang.String,Pattern]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [datosRegistroMedicoDTO.documento,documento]; arguments []; default message [documento],[Ljakarta.validation.constraints.Pattern$Flag;@2eeb84d5,\d(4,6)]; default message [debe coincidir con "\d(4,6)"]] ]

esto son los datos en insomnia

{
    "nombre": "Rodrigo Lopez",
    "email": "rodrigo.lopez@voll.med",
    "telefono": "3313456700",
    "documento": "123456",
    "especialidad": "ORTOPEDIA",
    "direccion": {
        "calle": "calle 1",
        "distrito": "distrito 1",
        "ciudad": "Lima",
        "numero": "1",
        "complemento": "a"
    }
}

el DTO

public record DatosRegistroMedicoDTO(
        // @NotNull
        @NotBlank // verificacion
        String nombre,
        @NotBlank @Email String email,
        @NotBlank @Pattern(regexp = "^\\d{10}$") String telefono,
        @NotBlank @Pattern(regexp = "\\d(4,6)") String documento,
        @NotNull Especialidad especialidad,
        @NotNull @Valid DatosDireccion direccion) {
}

y el mensaje de imsonia es este: "trace": "org.springframework.web.bind.MethodArgumentNotValidException: Validation failed for argument [0] in public void med.voll.api.controller.MedicoController.registrarMedico(med.voll.api.medico.DatosRegistroMedicoDTO): [Field error in object 'datosRegistroMedicoDTO' on field 'documento': rejected value [123456]; codes [Pattern.datosRegistroMedicoDTO.documento,Pattern.documento,Pattern.java.lang.String,Pattern]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [datosRegistroMedicoDTO.documento,documento]; arguments []; default message [documento],[Ljakarta.validation.constraints.Pattern$Flag;@2eeb84d5,\d(4,6)]; default message [debe coincidir con "\d(4,6)"]] \r\n\tat org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:144)\r\n\tat org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122)\r\n\tat . . . count: 1", "errors": [ { "codes": [ "Pattern.datosRegistroMedicoDTO.documento", "Pattern.documento", "Pattern.java.lang.String", "Pattern" ], "arguments": [ { "codes": [ "datosRegistroMedicoDTO.documento", "documento" ], "arguments": null, "defaultMessage": "documento", "code": "documento" }, [], { "defaultMessage": "\d(4,6)", "arguments": null, "codes": [ "\d(4,6)" ] } ], "defaultMessage": "debe coincidir con "\d(4,6)"", "objectName": "datosRegistroMedicoDTO", "field": "documento", "rejectedValue": "123456", "bindingFailure": false, "code": "Pattern" } ], "path": "/medicos"

2 respuestas

creo que ya vi mi error

¡Hola Estudiante, espero que estés bien!

Parece que el problema que estás experimentando se debe a un error en la validación del campo "documento" en tu DTO. El mensaje de error indica que el valor "123456" para el campo "documento" no coincide con el patrón definido en la anotación @Pattern.

Al revisar tu código, noto que el patrón definido para el campo "documento" es "\d(4,6)", pero parece que la expresión regular no está definida correctamente. La expresión regular correcta para validar un documento con 4 a 6 dígitos debería ser "\d{4,6}" en lugar de "\d(4,6)".

Por lo tanto, te recomendaría corregir la anotación en tu DTO de la siguiente manera:

@NotBlank
@Pattern(regexp = "^\\d{4,6}$")
String documento;

Una vez que realices esta corrección, intenta nuevamente enviar la solicitud desde Insomnia y debería funcionar correctamente.

Espero que esta solución te ayude a resolver el problema. ¡Buena suerte y sigue adelante con tu desarrollo en Spring Boot! Si tienes alguna otra pregunta, no dudes en preguntar.

Espero haber ayudado y buenos estudios!