2013-05-20 1 views
-1

를 나는 부자가 : popupPanel 함량 :JSF 구성 요소의 ViewState가 손실되고 : popupPanel

<rich:popupPanel id = "popupId"> 
    <h:panelGrid> 
     <h:form id="formId"> 
      <h:panelGrid> 
       // content, e.g. radiobuttons, dropdowns, panelGroups and other jsf and richfaces components , nested components 
      </h:panelGrid> 
     </h:form> 
    </h:panelGrid> 
</rich:popupPanel> 

그리고 열 링크 형태로 다시 쓰게하고 팝업 :

<a4j:commandLink actionListener="myListener();" render="popupId formId"> 

popupId 또는 formId과 같이 render 속성의 많은 값을 시도했습니다.

링크를 클릭하면 팝업 창이 열리고 있지만 양식에 javax.faces.ViewState 숨겨진 입력 필드가 없습니다. 일부 라디오를 선택하거나 드롭 다운 (또는 다른 작업)의 값을 변경하려고하면 javax.faces.ViewState이 없기 때문에 첫 번째 제출은 아무 작업도 수행하지 않습니다. 그 후에, 그것은 형태로 다시 나타나고 두 번째는 잘 작동합니다.

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

+0

[ 동작의 중복은 두 번째 클릭에서만 호출됩니다.] (http://stackoverflow.com/questions/10094615/a4jcomandbutton-action-is-only-invoked-on-second-click) – BalusC

답변

1

이 솔루션은 매우 쉽습니다.인 컴포넌트를 아약스 렌더링하지 않습니다. 모든 구성 요소를 안에 넣고이 구성 요소를 렌더링합니다!

<rich:popupPanel id="popupId"> 
    <h:form id="formId"> 
     <h:panelGrid id="panelGridId"> 
      // content 
     </h:panelGrid> 
    </h:form> 
</rich:popupPanel> 

하지 popupId하지 formId !!!!!!!

<a4j:commandLink actionListener="someListener()" render="panelGridId" /> 

그리고 우리는 javax.faces.ViewState id를 잃지 않고 모든 것이 올바르게 작동합니다!