I 다음 명령 클래스가 : 로고 이미지입니다명령 개체 검증 이상한 행동
class BookmakerCommand {
Bookmaker bookmaker
CommonsMultipartFile logotype
logotype validator: { val, obj ->
def logoImage = ImageIO.read(val.getInputStream())
if (logoImage.width > 500 || logoImage.height > 500) {
obj.errors.reject('logotype.invalid', 'bookmaker.logo.invalid.format')
}
}
}
. 너비 나 높이에 잘못된 크기가있는 경우 로고 유형 필드를 거부해야합니다. 이 오류가 페이지 상단에이 목적을 위해 이러한 구조를 사용하여 표시 할 :
경우<g:hasErrors bean="${command}">
<ul class="errors" role="alert">
<g:eachError bean="${command}" var="error">
<li <g:if test="${error in org.springframework.validation.FieldError}">data-field-id="${error.field}"</g:if>><g:message error="${error}"/></li>
</g:eachError>
</ul>
</g:hasErrors>
마권의 일부 필드는이 건설 해당 오류를 표시 유효하지 않습니다하지만 로고가없는 경우 그렇지 않은 경우 유효한. 나는 디버깅 시도하고이 줄을 발견 : 오류가 여전히 0 크기를 가지고 있기 때문에
obj.errors.reject('logotype.invalid', 'bookmaker.logo.invalid.format')
실제로 개체를 명령하는 오류를 추가하지 않습니다. 내가 뭘 잘못하고있어? 감사합니다.
UPDATE :
내가 한 번 더 디버그하는 나는이 라인에 대한 완전히 옳지 않은 것을 발견 :
발리 코드 내obj.errors.reject('logotype.invalid', 'bookmaker.logo.invalid.format')
디버깅이 줄 명령에 해당 오류를 추가 보여줍니다 객체가 아니라 유효성 검사기 코드를 종료하고 컨트롤러로 돌아간 직후에 오류가 사라집니다.
if (!command.validate()) {
...
}
디버그 코드 검사기 간다 : 그래서 나는이 코드 조각에서 디버깅을 시작 (명령 객체가되는) 오류가 포함 된 OBJ 후
logotype validator: { val, obj ->
def logoImage = ImageIO.read(val.getInputStream())
if (logoImage.width > 500 || logoImage.height > 500) {
obj.errors.reject('logotype.invalid', 'bookmaker.logo.invalid.format')
}
}
를 ('bookmaker.logo.invalid.format ')하지만 디버그가 계속되면
if (!command.validate()) {
>> HERE
}
command.errors가 다시 비게됩니다. 매우 이상한 :-(
나는, 당신이 당신의 유효성에errors.reject()
를 호출하지한다고 생각
것 I가 해당 필드를 백라이트하려면이 작업 페이지의 의미는 다음과 같습니다.
ref-doc에 나와있는 것처럼 전체 유효성 검사가 정확히 작동해야합니다. – injecteer
동일한 필드에 여러 개의 오류 메시지를 표시하려면 작동합니까? 이미지에 두 가지 제약 조건이있는 경우 - 크기보다 크지 않고 크기가 같아야합니다. 시간에 해당 형식 (예 : jpg)이 있어야합니다. 그리고 사용자가 잘못된 크기와 형식으로 이미지를 업로드하면 두 개의 오류 메시지 또는 하나가 표시됩니까? 감사합니다 :-) –