JSF 컴포넌트의 rendered
속성은 JSF가 원하는 HTML을 생성할지 여부를 제어하는 서버 측 설정입니다.
<f:ajax>
태그의 render
속성은 자바 스크립트 아약스 요청의 완료에 그 내용을 대체하기 위해 HTML DOM 트리에서 document.getElementById()
로 드실 수 JSF 생성 된 HTML 요소의 (상대적) 클라이언트 ID를 가리켜 야합니다.
그러나 JSF (rendered
이 false
)로 렌더링되지 않는 HTML 요소의 클라이언트 ID를 지정하므로 JavaScript는 HTML DOM 트리에서 해당 요소를 찾을 수 없습니다.
당신은 항상 렌더링하는 컨테이너 요소에 포장하고 HTML DOM 트리에 따라서 항상 가능합니다. 구체적인 문제에
관련없는
<h:commandButton action="#{Bean.method()}" value="Submit">
<f:ajax execute="something" render="messages" />
</h:commandButton>
<p>
<h:panelGroup id="messages">
<h:outputFormat rendered="#{Bean.answer=='one'}" value="#{messages.one}"/>
<h:outputFormat rendered="#{Bean.answer=='two'}" value="#{messages.two}"/>
</h:panelGroup>
</p>
, 당신은 가능한 디자인 실수를가했습니다. ,
<h:commandButton action="#{Bean.method()}" value="Submit">
<f:ajax execute="something" render="message" />
</h:commandButton>
<p>
<h:outputFormat id="message" value="#{Bean.message}" />
</p>
답장을 보내 주셔서 감사합니다. 내가 한 일은 render = "@ form"을 폼에 사용했다는 것입니다. 나는 당신이 제안한 것을 시도 할 것입니다. – sandra
그것은 항상 작동합니다 (구성 요소의 부모가 항상 * 렌더링 됨). 정확하게 (정확하게 내 대답이 당신에게 말하려고하는 것처럼). 양식에 예를 들어 전혀 업데이트 할 필요가없는 10 개의 다른 구성 요소가 포함되어있는 경우 불필요한 오버 헤드가있을 수 있습니다. – BalusC
아약스 렌더링에 조건을 추가 할 수 있습니까? –