Hay alguna manera de pasar a la acción en <rich:modalPanel>. Quiero escribir sencillo popup con «Sí» y «No» botón, y quiero volver a este emergente en diferentes páginas, por eso necesito que las diferentes acciones se invocó al «Sí» apretado el botón. Hay una manera de pasar algún valor en <rich:modalPanel> con <a4j:actionparam>:

<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>

Pero es una manera de pasar a la acción ?

InformationsquelleAutor | 2009-07-05

3 Comentarios

  1. 2

    Como usted está usando Facelets, a continuación, mirar Rick Hightower del artículo y la sección de «Pasar de las Acciones». Es el mismo método básico para lo que he utilizado, pero también pasa en el método del bean.

    Por ejemplo:

    <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>

    Y, a continuación, en el menú emergente:

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

    Tenga en cuenta que usa el #.

    • No se que pasa bean? ¿Cómo puedo pasar el frijol y la acción?
    • pruebe primero eh. los corchetes que permite la acción.
  2. 1

    Puedo encontrar la respuesta por mí mismo :). Tal vez va a ser útil para alguien.

    Que yo lo he hecho uso de Facelets. Cuando estoy incluyen emergente para mi la página me pase parametr a ella:

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

    Donde thisPageBean – es bean desde lo emergente invoca.

    A continuación, en mis emergente escribí:

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

    Y con esto me invocar thisPageBean.someAtion. Toda la magia es ${thisPageBean}, es necesario que nos $ pero no #.

  3. 0

    Sí yo no veo ningún problema con hacer esto. Puedes usar mi código si desea:

    <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>

    Básicamente la salida en la modalidad de panel que contendrá los valores de la TestBean

    Editar (el malentendido):

    Creo que se ha de definir su modal panel como este:

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

    Y en su managed bean tendrá que addChildren a su modal panel dinámicamente con java como este:

    public String action_PoppingThePanel() {
        HtmlCommandButton button = new HtmlCommandButton();
        button.setValue("Yes");
        String action = "#{TestBean.action_yes}";
        MethodExpression methodExpression =
                FacesContext.getCurrentInstance().getApplication().getExpressionFactory().
                createMethodExpression(FacesContext.getCurrentInstance().getELContext(), action, null,
                new Class<?>[0]);
    
        button.setActionExpression(methodExpression);
        getPopupPanel().getChildren().add(button);
        button = new HtmlCommandButton();
        button.setValue("No");
        String action = "#{TestBean.action_no}";
        methodExpression =
                FacesContext.getCurrentInstance().getApplication().getExpressionFactory().
                createMethodExpression(FacesContext.getCurrentInstance().getELContext(), action, null,
                new Class<?>[0]);
    
        button.setActionExpression(methodExpression);
        getPopupPanel().getChildren().add(button);        
        getPopupPanel().setRendered(true);
        getPopupPanel().setShowWhenRendered(true);
        return null;
    }
    • Pasar de cadena simple o de otro valor a modalPanel, pero quiero pasar a la acción. Quiero que en una página cuando hago clic en el botón «aceptar» en la ventana emergente un método fue complite, en otra página de otro método. Quiero pasar este método a emergente. Me va a ayudar para volver a este menú emergente.
    • Oh Im lo siento, no he entendido tu pregunta. Voy a mirar en esto para usted
    • Gracias por la rápida respuesta, pero me parece una solución fácil :). Ver la cima.

Dejar respuesta

Please enter your comment!
Please enter your name here