문제

내 빈을 새 페이지 값으로 업데이트하는 데 어려움을 겪고 있습니다.내 페이지에 두 개의 제출 버튼이 있고 내 페이지의 모드에 대한 부울 값을 기반으로 표시되는 버튼을 전환합니다.내 페이지가 업데이트 전용(검증 없음)인 경우 즉시=”true”인 제출 버튼이 표시됩니다.페이지가 프로세스 모드(유효성 검사)에 있을 때 즉시=”true”가 아닌 제출 버튼을 표시합니다.내가 겪고 있는 문제는 업데이트 모드(검증 없음)에 있을 때 입력 필드의 값이 Bean에 설정되지 않는다는 것입니다.이 모드에서 내가 하고 싶은 일은 페이지를 있는 그대로 저장하고 종료하는 것뿐입니다.해당 페이지의 정보는 처리할 준비가 되지 않았거나 원할 경우 "실제로 사용할" 준비가 되어 있지 않기 때문에 유효성 검사가 필요하지 않습니다.즉, 내 페이지가 프로세스 모드(검증)에 있으면 모든 것이 의도한 대로 작동합니다.값이 제출되고 저장됩니다.

내가 하려는 일에 특별한 것이 없기 때문에 아직 코드를 게시하지 않습니다.나는 단순한 getter/setter를 가리키는 값 바인딩을 가지고 있습니다.내 콩은 @ViewScope에 있습니다.

나는 BalusC의 훌륭한 blogspot 게시물에서 예제를 사용해 보았습니다. 디버그-jsf-수명주기.입력 필드에 Immediate=”true”를 입력하면 Immediate="true"로 제출 버튼을 클릭할 때 아무런 영향을 미치지 않습니다.그럼에도 불구하고 내가 이해하는 방식은 UICommand에서 Immediate=”true”로 애플리케이션에 유효성 검사를 건너뛸지 여부를 지시하는 것입니다.입력 필드에 넣으면 유효성 검사가 더 빨리 수행됩니다.뭔가 빠졌나요?

어떤 아이디어가 있나요?이에 대한 모든 도움을 주시면 감사하겠습니다!

앱 세부사항:
JSF 2.0.3
톰캣 6.0.14

도움이 되었습니까?

해결책

그만큼 immediate="true" 유효성 검사를 비활성화하려는 의도는 없습니다.유효성 검사의 우선 순위를 지정하거나 입력 처리를 완전히 건너뛰려는 의도입니다.또한보십시오 요약 기사 하단에 있습니다.

설정을 통해 유효성 검사를 비활성화해야 합니다. required="false", 또는 <f:validator disabled="true">.다음은 귀하가 boolean process 양식의 상태를 나타내는 속성:

<h:inputText value="#{bean.value1}" required="#{bean.process}" />
<h:inputText value="#{bean.value2}" required="#{bean.process}">
    <f:validator validatorId="someValidatorId" disabled="#{!bean.process}" />
</h:inputText>
...

이렇게 하면 필드가 필요하지 않으며 다음과 같은 경우 유효성이 검사되지 않습니다. process 평가하다 false.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top