2011-12-10 2 views
1

내가 시간이 : InputText]를 요소와 시간을 : 메시지가 그것을 : 나는 페이지를 열 때JSF는 시간 동안 스팬 요소를 렌더링하지 : 메시지

<h:form id="cancelForm"> 
    <h:inputText id="days" /> 
    <h:message for="days" /> 
</h:form> 

그래서, JSF는 대한 "스팬"요소를 렌더링 에러 메시지. 괜찮아. 내가 제출 누르면 응용 프로그램은 자바로 이동하고 필드의 유효성을 확인 : 메시지 :

// Some code 
if (error) { 
    FacesContext.getCurrentInstance().addMessage("days", new FacesMessage("Error message")); 
    return error(); 
} 

하지만 JSF는 시간에 대한 "범위"를 렌더링하지 않습니다 후

.

왜?

답변

3

days은 inputText 구성 요소의 단순한 ID입니다. addMessage 호출의 경우 전체 ID (클라이언트 ID)가 필요합니다.

렌더링 된 HTML 소스 코드를보고 클라이언트 ID를 얻을 수 있으며 Facelet의 모든 상위 명명 컨테이너에 ID가 있으면 추측 할 수 있습니다. 일반적으로 모든 부모 ID는 :으로 연결됩니다.

항상 100 % 올바른 ID를 얻으려면 inputComponent를 백업 빈에 바인딩하고 위에 표시된 코드 조각에서 해당 ID를 쿼리하십시오.

마지막으로 한 단어의 조언 : 일반적으로 오류 검사 및 얼굴 메시지 추가의 종류는 유효성 검사기 및/또는 변환기를 통해 수행됩니다. 백킹 빈에서이 작업을 수행하는 것이 첫 번째 방법이 아닙니다.

+0

다음. 나는 ID를 추적하고 자바 측에서 FacesMessage.SEREVERITY_ERROR를 사용하여 더 자세한 facesMessage 객체를 만들었습니다. – Daggeto