2009-07-05 3 views
1

<rich:modalPanel>에 조치를 전달할 수있는 몇 가지 방법이 있습니다. 나는 "예"와 "아니오"버튼으로 간단한 팝업을 쓰고 싶습니다. 다른 페이지에서이 팝업을 재사용하고 싶습니다. 그래서 "예"버튼을 눌렀을 때 다른 동작이 호출되어야합니다. 이 <a4j:actionparam><rich:modalPanel>에서 일부 값 전달하는 방법입니다 :<rich : modalPanel>에서 전달 작업

<a4j:commandButton value="See details…" id="det" 
    reRender="popup_dataIdField, …"> 

    <rich:componentControl for="popup" 
     operation="show" event="onclick" /> 

    <a4j:actionparam name="message" assignTo="#{popupBean.message}" 
     value="#{myBean.message}" />           
</a4j:commandButton> 

는 그러나 조치를 통과 할 수있는 방법은?

답변

1

나는 혼자 답을 찾았습니다. :) 어쩌면 그것은 누군가에게 도움이 될 것입니다.

나는 Facelets를 사용하여이 작업을 수행했습니다. 난 내 페이지에 팝업을 포함 할 때 나는 그것을 parametr을 전달합니다

  <ui:include src="./WEB-INF/popup/popup.xhtml"> 
       <ui:param name="yesAction" value="${thisPageBean}" /> 
      </ui:include> 

하는 경우 thisPageBean - 호출 무엇 팝업에서 콩입니다.

<a4j:commandButton id="yesButton" value="#{msgs.yesButton}" 
        action="#{yesAction.someAtion}" 
</a4j:commandButton> 

을 그리고이와 나는 thisPageBean.someAtion를 호출 :

그런 다음 내 팝업에서 나는 썼다. 모든 마법은 ${thisPageBean}입니다. $은 (가) #이 아닙니다.

0

예 이렇게하는 데 어떤 문제가 보이지 않습니다.

<rich:modalPanel id="popup" width="261" height="386" autosized="true"left="180" top="200" keepVisualState="true"> 
    <h:panelGrid id="panelGrid"> 
     <h:outputText value="#{PopupBean.output}" id="popupMessage"/> 
      <a4j:commandLink action="#"> 
       <h:outputText value="Close" /> 
       <rich:componentControl for="popup" operation="hide" event="onclick"/> 
      </a4j:commandLink> 
    </h:panelGrid> 
</rich:modalPanel> 
<h:panelGrid columns="2"> 
    <a4j:commandLink action="#" reRender="panelGrid"> 
     <h:outputText value="Yes" /> 
     <rich:componentControl for="popup" operation="show" event="onclick"/> 
     <a4j:actionparam name="message" assignTo="#{PopupBean.output}" value="#{TestBean.input1}"/> 
    </a4j:commandLink> 
    <a4j:commandLink action="#" reRender="panelGrid"> 
     <h:outputText value="No" /> 
     <rich:componentControl for="popup" operation="show" event="onclick"/> 
     <a4j:actionparam name="message2" assignTo="#{PopupBean.output}" value="#{TestBean.input2}"/> 
    </a4j:commandLink> 
</h:panelGrid> 

Basicly 모달 패널의 출력이 TestBean에

편집 (오해) 값을 포함합니다 :

을 당신이 것으로 판단 원하는 경우 내 코드를 사용할 수 있습니다 다음과 같이 모달 패널을 정의해야합니다.

<rich:modalPanel id="popup" width="261" height="386" autosized="true"left="180" top="200" keepVisualState="true" 
    binding="#{PopupBean.popupPanel}"> 
</rich:modalPanel> 

그리고 관리 빈에서 모달에 addChildren 패널은 동적으로 다음과 같이 자바를 사용합니다.

+0

당신은 단순한 문자열이나 다른 값을 modalPanel에 전달하지만 패스 동작을 원합니다. 한 페이지에서 "확인"버튼을 클릭 할 때 한 페이지가 다른 페이지의 다른 페이지와 비슷한 방식으로 표시되기를 원합니다. 이 방법을 팝업으로 전달하고 싶습니다. 이 팝업을 재사용하는 데 도움이 될 것입니다. – aindl

+0

오, 죄송합니다. 귀하의 질문에 오해 한 것 같습니다. 나는 당신을 위해 이것을 살펴볼 것입니다 –

+0

빠른 응답을 주셔서 감사합니다. 그러나 나는 쉬운 해결책을 찾았습니다. :). 꼭대기를보십시오. – aindl

3

Facelets를 사용할 때 Rick Hightower's article 및 "액션 전달"섹션을 확인하십시오. 그것은 당신이 사용했던 것과 동일한 기본 메소드 일뿐만 아니라 bean의 메소드를 전달합니다.

예 :

<ui:include src="./WEB-INF/popup/popup.xhtml"> 
    <ui:param name="yesAction" value="save"/> 
    <ui:param name="cancelAction" value="cancel"/> 
    <ui:param name="backingBean" value="#{thisPageBean}"/> 
</ui:include> 

그리고 팝업에서 : 당신은 #을 사용

<a4j:commandButton id="yesButton" value="#{msgs.yesButton}" 
    action="#{backingBean[yesAction]}"/> 

참고.

+0

Bean을 전달하지 않습니까? 콩과 행동 모두를 어떻게 통과 할 수 있습니까? – nikagra

+0

먼저 사용해보십시오. 대괄호는 작업을 허용합니다. – Damo