Frage

Es gibt einige Wege-Aktion in <rich:modalPanel> passieren. Ich mag einfach Popup schreiben mit „Ja“ und „Nein“, und ich möchte in verschiedenen Seiten dieses Popup wieder zu verwenden, das ist, warum ich brauche, dass andere Aktion aufgerufen wurde, wenn „Ja“ -Knopf gedrückt. Es gibt einen Weg, um etwas Wert in <rich:modalPanel> mit <a4j:actionparam> weitergeben müssen:

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

Aber ist eine Möglichkeit, Maßnahmen passieren?

War es hilfreich?

Lösung 2

Ich finde die Antwort von mir :). Vielleicht wird es für jemanden nützlich sein.

Ich habe dies mit Facelets getan. Wenn ich Pop-up auf meiner Seite sind gebe ich parametr es:

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

Wo thisPageBean -. Ist Bohne von dem, was Popup aufgerufen

Da ist in meinem Popup schrieb ich:

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

Und damit ich rufe thisPageBean.someAtion. Alle Magie ist ${thisPageBean}, es ist notwendig, um uns $ aber keine #.

Andere Tipps

Wie Sie Facelets verwenden dann sehen Rick Hightowers Artikel und die im Abschnitt „Passing Aktionen“. Es ist die gleiche grundlegende Methode zu dem, was Sie verwendet haben, sondern auch in der Methode auf der Bohne vorbei.

Beispiel:

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

Und dann im Popup:

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

Beachten Sie, dass Sie die # verwenden.

Ja ich nicht irgendwelche Probleme sehen mit diesem zu tun. Sie können meinen Code verwenden, wenn Sie wollen:

<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 der Ausgang des Modal Panel werden die Werte in der TestBean enthalten

Bearbeiten (das Mißverständnis) :

Ich glaube, Sie müssen Ihre modal Feld wie folgt definieren:

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

Und in Ihrer verwalteten Bohne werden Sie addChildren zu Ihrem modalen Panel dynamisch mit Java wie folgt aussehen:

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;
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top