2011-03-07 5 views
1

데이터베이스에서 값이 채워진 양식이 있습니다. 양식은 partialSubmit = "true"인 ice : inputText 구성 요소로 구성되어 있으므로 필드가 포커스를 잃을 때 유효성이 검사됩니다. 양식에 저장 버튼과 재설정 버튼이 있습니다. 리셋 버튼은 즉각 = "참"으로되어 있으며 단지 일반적인 ice : commandButton, 즉 type = "reset"이 아닙니다.ICEfaces 1.8.2에서 재설정 버튼을 구현하는 데 문제가 있습니다.

일반적인 InputText]를 필드 :

<ice:commandButton value="Reset" style="margin-left:5px;" actionListener="#{client.reset}" immediate="true"/> 

문제는 이것이다 :

<ice:inputText id="input1" maxlength="6" size="6" value="#{client.inboxThreshold}" partialSubmit="true"> 
    <f:convertNumber integerOnly="true" /> 
    <f:validateLongRange minimum="0" /> 
</ice:inputText> 

버튼은 "재설정"사용자가 값을 변경하고 리셋 버튼을 클릭하면의 actionListener 해고되는 업데이트 배킹 빈 값 유효성 검증 오류는 제거되지만 페이지가 렌더링 될 때 모델 값이 갱신되지 않습니다.

위상 수신기는 Apply_Request_Values에서 Render_Response로 이동하고 있음을 나타냅니다. 따라서 Update_model_values ​​단계를 수동으로 트리거해야한다고 생각합니다.

아이디어가 있으십니까?

답변

1

나는 그것을 시도하지는 않았지만 일반적으로 위상 문제로 들린다. 짧은 즉, 이것은 actionListener에서 콩 값을 너무 일찍 설정하는 것을 의미합니다. 그것들은 jsf 컴포넌트의 submitedValue에 의해 오버라이드 될 것이다. 두 가지 가능한 솔루션이 있습니다.

첫 번째는 구성 요소를 바인딩하고 setSubmittedValue를 통해 원하는 값을 구성 요소에 직접 설정하는 것입니다.

더 멋진 솔루션은 두 번째 솔루션입니다. ice:setEventPhase 태그를 사용합니다 (taglib 참조). 이를 통해 actionListener가 이후 단계에서 호출되도록 강제 할 수 있으므로 bean의 값은 jsf 구성 요소의 제출 된 값으로 대체되지 않습니다.

ice:commandButton<ice:setEventPhase phase="INVOKE_APPLICATION">으로 묶으십시오.

PS :

위상 리스너가 이 Render_Response에 Apply_Request_Values에서 무슨 일을 나타냅니다. 따라서 을 수동으로 Update_model_values ​​단계로 트리거해야합니다.

이것은 immediate="true"에서 비롯됩니다. 이를 통해 ICEfaces는 두 번째 단계 (Apply_Request_Values)에서 해당 구성 요소의 모든 단계 (commandButton)를 수행 한 다음 다른 구성 요소의 마지막 단계 (Render_Response)로 직접 이동합니다. 따라서 다른 구성 요소의 유효성 검사기는 호출되지 않습니다. (당신은 또한 "즉시 이벤트 처리"섹션에서 즉시에 대한 세부 정보를 찾을 경우 예를 here에 대한)

나는 상에 대해 읽어 보시기 바랍니다

관련 문제