2012-06-14 4 views
0
내 페이지에서 다음 레이아웃 (간체) 한

데이터 모델이 탭 패널을 업데이트되지 않습니다

<h:form> 
    <h:commandButton action="#{bean.save} value="Save"/> 

    <rich:tabPanel switchType="ajax"> 
     <rich:tab name="one" switchType="client"> 

     </rich:tab> 

     <rich:tab name="two" switchType="ajax"> 

     </rich:tab> 

     <rich:tab name="three" switchType="client"> 

     </rich:tab> 

    </rich:tabPanel> 
</h:form> 

탭 "한"과 "세"switchType = "클라이언트"가, 거기에 몇 가지 빈 속성에 바인딩 된 그들에 대한 입력. "저장"을 누르면, 두 개의 탭에서 빈 속성이 업데이트 될 것으로 예상됩니다. 그러나 속성은 현재 탭의 입력에서만 업데이트됩니다. 전체 양식이 제출되었지만 다른 탭의 값은 손실됩니다 (HTTP 감시자에서 확인). 따라서 사용자는 한 탭에 데이터를 입력하고 "저장"을 누른 다음 다른 탭에서 값을 업데이트하고 "저장"을 눌러 모든 변경 사항을 저장해야합니다. 한 번에 모든 탭의 값을 전파하는 것이 어떻게 가능합니까?

답변

0

이 솔루션은 발견되었습니다 : 난에 "AJAX"에서 탭 패널의 switchType을 변경했습니다 " 고객". 제안 해 주셔서 감사합니다.

0

당신은 자바 스크립트로 비교적 쉽게이 작업을 수행 할 수 있습니다. 탭 설정이 완료되면 다른 탭 구성 요소를 표시하거나 숨길 논리를 추가하면됩니다.

+0

문제는 탭 구성 요소를 표시하거나 숨기는 데 문제가 없습니다. 문제는 그들이 HTTP –

+0

미안 해요, 내가 무엇을 의미하는 것은 하나 개의 형태에 양식의 모든 요소를 ​​넣어 자바 스크립트와 그것의 다른 섹션을 숨길 수 있었다 통해 제출 되더라도 숨겨진 탭의 값이 데이터 모델에 전파되지 않는 것입니다. 각 탭이 자체 양식으로 작동하는 것 같습니다. –

+0

그건 옵션이 아니에요, 우리는 탭 패널을 사용하여 구현 된 많은 페이지를 가지고 있으며, 나는이 접근법으로 바로 작업하고 싶습니다. –

0

먼저 <h:commandButton /><a4j:commandButton />으로 변경하여 서버에 대한 아약스 요청으로 제출합니다. 또한 작업 후 페이지 내용을 다시 렌더링 할 수 있습니다. JSF는 탐색 규칙을 따르지 않도록

<h:form> 
    <!-- RichFaces 3.3 --> 
    <a4j:commandButton value="Save" 
     action="#{bean.save}" 
     reRender="tbpMyTabs" /> 
    <!-- RichFaces 4. --> 
    <a4j:commandButton value="Save" 
     action="#{bean.save}" 
     render=":tbpMyTabs" /> 

    <rich:tabPanel id="tbpMyTabs" switchType="ajax"> 
     <rich:tab name="one" switchType="client"> 
     </rich:tab> 
     <rich:tab name="two" switchType="ajax"> 
     </rich:tab> 
     <rich:tab name="three" switchType="client"> 
     </rich:tab> 
    </rich:tabPanel> 
</h:form> 

는 무효를 반환 할 Save 방법을 변경, 성공적인 액션 아약스 요청을합니다. JSF 2로 작업한다면 bean은 뷰 범위를 가져야한다. 그렇지 않으면 요청 범위와 KeepAlive 주석이 있어야한다.

RichFaces 3.3 콩 구현

@KeepAlive 
public class Bean { 
    public Bean() { 
    } 
    public void save() { 
    } 
} 

JSF 2/RichFaces 4.x의 콩 구현

@ManagedBean 
@ViewScoped 
public class Bean { 
    public Bean() { 
    } 
    public void save() { 
    } 
} 
+0

해결책이 작동하지 않습니다. 에서 을 어떻게 변경하면 도움이 될까요? –

+0

각각의 ''내부에 다른 빈을 사용한다면'@ KeepAlive' 태그와 요청 범위 (RF 3.x) 또는 뷰 범위 (JSF 2/RF 4)가 있어야합니다. 어쩌면 내가하고있는 일의 샘플을 게시하면 내가 가진 것을 추측하는 대신 정확한 답변을 제공하기 위해 내 게시물을 편집 할 수 있습니다. –

+0

해결책을 찾았습니다 : tabpanel의 switchType을 "ajax"에서 "client"로 변경했습니다. –

관련 문제