rich: modalpanel no se mostrará más que cuando se invoca desde el formulario

Tengo un problema con mostrar un <rich:modalPanel> mas de una vez. Tengo un formulario que tiene un <a4j:commandlink onclick="#{rich:component('mp')}.show()" (También he probado un rich:componentControl).

Este enfoque funciona bien una vez. Dentro del panel modal tengo un nuevo formulario con alguna acción adjunta al botón de enviar (a4j:commandButton). Cuando esta acción se completa, el modalpanel se oculta utilizando el mismo enfoque que el anterior con oncomplete="#{rich:component('mp')}.hide()" , y se vuelve a renderizar el formulario que contiene el enlace de comando.

Ahora, el problema es que el enlace de comando para mostrar el panel modal ya no funciona. Si pongo un js alert('something') en la onclick evento puedo ver que el onclick se activa el evento, pero el modalpanel no se representa.

Espero que esta sea suficiente información... Puedo agregar algo de código fuente más tarde si es necesario

Muchas Gracias

editar: aquí hay más código:

<a4j:form prependId="false" ajaxSubmit="true">
    <a4j:outputPanel id="createActivityPanel">
        <h:panelGrid columns ="2">
            <h:outputLabel value="#{msg.createActivityExpectedParticipantsLabel}" />
            <h:panelGrid columns ="2">
                <h:outputLabel value="#{msg.createActivityAvailablePointsLabel}: #{sessionBean.loggedInUser.letspoints}" />
                <a4j:commandLink value="#{msg.createActivityGetMorePointsLinkLabel}" onclick="#{rich:component('convertPointsPanel')}.show()" />
                <rich:inputNumberSlider id="participantsSlider" value="#{activityRequestBean.newActivityExpectedNoParticipants}" maxValue="#{activityRequestBean.maxNoParticipants}" />
           </h:panelGrid>
       </h:panelGrid>
   </a4j:outputPanel>
</a4j:form>
<rich:modalPanel rendered="#{sessionBean.loggedIn}" id="convertPointsPanel" width="700" height="400">
    <a4j:support event="onhide" reRender="createActivityPanel"></a4j:support>
    <f:facet name="header">
        <h:outputText value="Velg poeng fra kategorier for å konvertere" />
    </f:facet>
    <f:facet name="controls">
        <a4j:form><a4j:commandButton id="closeButton" onclick="#{rich:component('convertPointsPanel')}.hide()" type="image" image="/img/close.gif"/></a4j:form>
    </f:facet>
    <a4j:form prependId="false" ajaxSubmit="true" id="convertPointsForm">
        <h:panelGrid columns ="2">
            <h:panelGroup layout="block" style="width:350px; float:left;">
                <rich:dataList var="catscore" value="#{pointsRequestBean.scores}" id="activityPointSliderList">
                    <h:graphicImage height="30" width="30" value="#{catscore.usercategoryscore.category.imagepath}" />
                    <h:outputText value="#{catscore.usercategoryscore.category.name}" />
                    <rich:inputNumberSlider maxValue="#{catscore.usercategoryscore.score}" value="#{catscore.transferredScore}" step="2" />
                </rich:dataList>
                <a4j:commandButton value="Konverter" id="convertButton" action="#{pointsRequestBean.convertPoints}" oncomplete="#{rich:component('convertPointsPanel')}.hide()" reRender="createActivityPanel"/>
            </h:panelGroup>
            <h:panelGroup layout="block" style="width:350px; float:right; border-left: 1px solid #ACBECE; padding: 10px;">
                <h:outputText value="kjøp poeng fra paypal?" />
            </h:panelGroup>
        </h:panelGrid>
    </a4j:form>
</rich:modalPanel>

Tenga en cuenta que he seguido el consejo de volver a representar el panel en lugar del formulario.

preguntado el 19 de noviembre de 10 a las 03:11

1 Respuestas

¿Podrías publicar el código XHTML?

Básicamente, uno de sus problemas puede deberse al hecho de que vuelve a renderizar un formulario. En general, no es una buena idea. Una solución es incluir un <a4j:outputPanel> y luego vuelva a renderizar este panel en lugar del formulario en sí.

Entonces en lugar de tener:

<a4j:commandButton ... reRender="myForm"/>
<h:form id="myForm">
    ...
</h:form>

tu puedes hacer:

<a4j:commandButton ... reRender="myFormContent"/>
<h:form id="myForm">
    <a4j:outputPanel id="myFormContent">
        ...
    </a4j:outputPanel>
</h:form>

Si esto no funciona, agregue más código en su pregunta.

respondido 19 nov., 10:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.