2012-06-07 2 views
1

나는 <h:commandLink> 열에 이고, 명령 링크로 렌더링해야 할 <h:dataTable> 바깥에있는 <h:outputext>입니다.아약스로 datatable 외부의 컴포넌트를 렌더링하는 방법은 무엇입니까?

<h:form> 
     <h:dataTable value="#{userControl.lista}" var="c"> 

      <h:column> 
       <f:facet name="header" > 
        <h:outputText styleClass="leftColumn" value="Nombre"/> 
       </f:facet> 
        #{c.nombre} 
      </h:column> 

      <h:column> 
       <f:facet name="header" > 
        Usuario 
       </f:facet> 
       <h:commandLink actionListener="#{userControl.setAdmin_user(c.user)}" value="#{c.user}"> 
        <f:ajax render="output" /> 
       </h:commandLink>     
      </h:column>  

     </h:dataTable> 


     <h:outputText id="output" value="#{userControl.admin_user}"/> 
</h:form> 

작동하지 않습니다. 같은 열 안에 <h:outputText>을 이동하면 작동합니다.

어떻게 이것이 발생하며 어떻게 해결할 수 있습니까?

답변

4

현재 기본 NamingContainer 단락 문자 :로 시작하지 않는 <f:ajax render>에 있고, 따라서 귀하의 케이스 <h:dataTable>에있는 현재NamingContainer 구성 요소에 상대적으로 클라이언트 ID. 따라서 outputtext 구성 요소가 동일한 데이터 테이블에도있는 경우에만 작동합니다.

출력 텍스트 구성 요소를 절대 클라이언트 ID로 대신 참조해야합니다. 모든 NamingContainer 구성 요소를 아직 암기하지 않은 시작가의 경우 가장 쉽게 찾는 방법은 웹 브라우저에서 생성 된 HTML 요소의 id 속성을 확인하는 것입니다. 웹 브라우저에서 페이지를 열어 소스보기을 생성하고 <h:outputText id="output">에 의해 생성 된 요소를 찾고 : 접두사로 접두어를 붙이면 절대이 뷰 루트에 있습니다.

예. formId는이 outputText은 <h:form> 묶인 경우에 대해 임의의 ID <h:form>

<span id="formId:output"> 

. <h:form>에 고정 ID를 지정하지 않으면 JSF가 자동 생성합니다. 고정 ID를 지정하려면 <h:form id="formId">과 같습니다.

는 그래서 <f:ajax render>는 pefertly이 다음

<f:ajax render=":formId:output" /> 
+0

감사 BalusC 같은 작업을 보일 것입니다. :) – Roberto

+0

당신을 진심으로 환영합니다. – BalusC

관련 문제