2010-06-24 10 views
5

구성 요소 컨텍스트 외부에 배치 된 구성 요소를 JSF 업데이트 할 수 있습니까?<f:ajax> 구성 요소 컨텍스트 외부의 구성 요소 업데이트

현재 다음 페이지가 작동하지 않습니다 :

<?xml version="1.0" encoding="ISO-8859-1" ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core"> 
<h:head> 
    <title>Welcome</title> 
</h:head> 

<h:body> 
    <p><h:outputText id="out" value="#{user.greeting}" /></p> 

    <h:form id="form1"> 

     <h:inputText value="#{user.name}" id="user-name" /> 
     <p><h:inputSecret value="#{user.password}" id="password" /></p> 
     <p> 
     <h:commandButton value="Login" id="login-button"> 
      <f:ajax execute="user-name password" render="out" /> 
     </h:commandButton> 
     </p> 
    </h:form> 
</h:body> 

</html> 

은 내가 <h:form> 내부 #out 구성 요소를 넣을 경우 페이지가 제대로 렌더링 할 것이라는 점을 알고있다. 그러나 #out 구성 요소를 양식 외부에 배치하는 방법이 있습니까 (예 : 현재 위치).

답변

10

해결! out:out으로 지칭 할 수 있습니다. 이런 식으로 findComponent은 뷰 루트에서 시작하여 검색합니다. 그래서 여기에 해결책이 있습니다 :

<?xml version="1.0" encoding="ISO-8859-1" ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core"> 
<h:head> 
    <title>Welcome</title> 
</h:head> 

<h:body> 
    <p><h:outputText id="out" value="#{user.greeting}" /></p> 

    <h:form id="form1"> 
     <h:inputText value="#{user.name}" id="user-name" /> 
     <p><h:inputSecret value="#{user.password}" id="password" /></p> 
     <p> 
     <h:commandButton value="Login" id="login-button"> 
      <f:ajax execute="user-name password" render=":out" /> 
     </h:commandButton> 
     </p> 
    </h:form> 
</h:body> 

</html>