代码之家  ›  专栏  ›  技术社区  ›  jose1292

<f:setPropertyActionListener它不适用于对话框

  •  0
  • jose1292  · 技术社区  · 7 年前

    单击编辑按钮时,所选项目不会显示在对话框中

    en el apartado del dialog tengo el rendered,que se supone realizala llamada al controllador

    这是我的卡鲁塞尔。Xhtml

               <p:commandButton update="tab:formIndex:myform:editarSlider"  oncomplete="PF('popupEditSlider').show()" icon="ui-icon-pencil" title="Editar">
                 <f:setPropertyActionListener value="#{car}" target="#{carrucelController.selectCarrucel}" />
               </p:commandButton>                            
    
    
    <p:dialog id="dialog" header="Editar Slider" widgetVar="popupEditSlider" modal="true" showEffect="fade" hideEffect="fade" resizable="false">
                    <p:outputPanel id="editarSlider" style="text-align:center;">
                        <p:panelGrid  columns="2" rendered="#{not empty carrucelController.selectCarrucel}" columnClasses="label,value">                            
                            <f:facet name="header">
                                <img src="#{arrucelController.selectCarrucel.imagen}" style="height: 80px;"/>
                            </f:facet>
    
                            <h:outputText value="Titulo" />
                            <p:inputText value="#{arrucelController.selectCarrucel.nombre}" />
    
                            <h:outputText value="Texto:" />
                            <p:inputText value="#{arrucelController.selectCarrucel.textoImagen}" />
                        </p:panelGrid>
                        <br></br>
                        <p:commandButton id="btnGuardar" styleClass="clsButton" value="Guardar" actionListener="#{carrucelController.editSlider}"
                        oncomplete="PF('popupEditSlider').hide()" update="@form"/>
                    </p:outputPanel>
                </p:dialog> 
    

    我的控制器

    在这里,我定义了版本的方法

    public void editSlider() {
        log.info("[-- Editar Slider:  " + selectCarrucel.getNombre() + " --]");
    
        for(int i=0; i<lstCarrucel.size(); i++) {
            log.info("[-- " + selectCarrucel.getNombre() + " - " + 
            selectCarrucel.getLink() + " - " + selectCarrucel.getTextoImagen() +  " --]");
            if(lstCarrucel.get(i).getNombre() == selectCarrucel.getNombre()){
                lstCarrucel.get(i).setNombre(selectCarrucel.getNombre());
                lstCarrucel.get(i).setTextoImagen(selectCarrucel.getTextoImagen());
                lstCarrucel.get(i).setLink(selectCarrucel.getLink());
    
            }
        }
    
     }
    }
    

    这是编辑我的项目的方法

    1 回复  |  直到 7 年前
        1
  •  0
  •   dognose    7 年前

    #{carrucelController.selectCarrucel} null ,当准备好对话框内容时。

    现在,您的按钮在支持bean中设置属性,并且只显示在属性为null时呈现的对话框。

    使用 dynamic=true 在对话框上应该可以解决您的问题。这将在对话框显示时呈现其内容(即,一旦 setPropertyActionListener 电话 show() onComplete ),而不是在第一个页面加载期间在dom中生成对话框。

    供参考: https://www.primefaces.org/showcase/ui/overlay/dialog/dynamic.xhtml