2010-07-12 5 views
1

4 개의 입력 텍스트 필드를 포함하는 백업 빈에 연결된 검색 양식이 있습니다. 내가 일하는 디자인은 사용자가 검색 결과를 볼 수 있어야하지만 편집 할 수 없어야 함을 나타냅니다. 그렇지 않은 경우, 내가 관리 Bean가 비어있는 경우 입력을 표시하기 위해 렌더링 속성을 사용하고, 출력 텍스트 태그를 표시하기로 결정renderedText의 렌더링 된 속성

<t:inputText styleClass="inputText" id="name" rendered="#{not searchCriteria.fieldsEntered}" 
value="#{searchCriteria.name}" autocomplete="off"></t:inputText> 
<h:outputText value="#{searchCriteria.name}" rendered="#{searchCriteria.fieldsEntered}"></h:outputText>          

디스플레이 부품이 올바르게 작동하지만이 납니까 첫 번째 그 필드는 두 개 이상의 검색 필드가 입력 될 때 관리 Bean에 저장됩니다.

렌더링 된 속성을 inputText에서 제거 했으므로 내 문제의 원인이 될 수 있습니다. 여기서 일어나는 일을 추측 할 수는 있지만 그 이유는 모르겠다.

저는이 상황에서 outputText 태그를 제거하고 렌더링 된 변경 사항을 사용 안함으로 설정한다고 생각합니다. 왜 초기 계획이 잘못된지 궁금합니다.

답변

2

rendered="false"은 입력 요소가 렌더링되지 않으므로 해당 값이 서버 측에 제출되지 않습니다. 요청 범위 Bean을 사용하는 경우, 초기 값은 설정되지 않습니다. 빈을 세션 범위에 두거나 h:outputText을 따라 h:inputHidden을 추가하여 그 값을 후속 요청에 전송하려고합니다.

이미 Tomahawk's t:inputText을 사용하고 있으므로 rendered 속성 및 보조 h:outputText 대신 displayValueOnly 속성을 사용하는 것이 좋습니다. 너트에서

: 빠른 응답

<t:inputText displayValueOnly="#{searchCriteria.fieldsEntered}" ... /> 
+0

감사합니다. – Sean