Dialogo Primefaces

12 respostas
F

Olá, estou encontrando dificuldades em chamar um dialogo primefaces de outro arquivo. Estou usando o include, mas no console do navegador aparece a mensagem de erro que o widgetVar não foi localizado.
Alguém sabe como resolver isso?

12 Respostas

D

Tem código ou só tá criando na imaginação mesmo?

F

Esse é o List.xhtml

<ui:composition xmlns=“http://www.w3.org/1999/xhtml
xmlns:h=“http://java.sun.com/jsf/html
xmlns:f=“http://java.sun.com/jsf/core
xmlns:ui=“http://java.sun.com/jsf/facelets
xmlns:p=“http://primefaces.org/ui
template="/WEB-INF/template.xhtml">

<ui:define name="title">
    <h:outputText value="#{bundle.ListUsuarioTitle}"></h:outputText>
</ui:define>

<ui:define name="content">
    <h:form id="UsuarioListForm" >
        <p:panel header="#{bundle.ListUsuarioTitle}">
            <p:dataTable id="datalist" value="#{usuarioController.items}" var="item"
                         selectionMode="single" selection="#{usuarioController.selected}"
                         paginator="true"
                         rowKey="#{item.userCodigo}"
                         rows="10"
                         rowsPerPageTemplate="10,20,30,40,50"
                         >

                <p:ajax event="rowSelect"   update="createButton viewButton editButton deleteButton"/>
                <p:ajax event="rowUnselect" update="createButton viewButton editButton deleteButton"/>

                <p:column>
                    <f:facet name="header">
                        <h:outputText value="#{bundle.ListUsuarioTitle_userCodigo}"/>
                    </f:facet>
                    <h:outputText value="#{item.userCodigo}"/>
                </p:column>
                <p:column>
                    <f:facet name="header">
                        <h:outputText value="#{bundle.ListUsuarioTitle_userUsuario}"/>
                    </f:facet>
                    <h:outputText value="#{item.userUsuario}"/>
                </p:column>
                <p:column>
                    <f:facet name="header">
                        <h:outputText value="#{bundle.ListUsuarioTitle_userSenha}"/>
                    </f:facet>
                    <h:outputText value="#{item.userSenha}"/>
                </p:column>
                <f:facet name="footer">
                    <p:commandButton id="createButton" icon="ui-icon-plus"   value="#{bundle.Create}" actionListener="#{usuarioController.prepareCreate}" update=":UsuarioCreateForm" oncomplete="PF('UsuarioCreateDialog').show()" />
                    <p:commandButton id="viewButton"   icon="ui-icon-search" value="#{bundle.View}" update=":UsuarioViewForm" oncomplete="PF('UsuarioViewDialog').show()" disabled="#{empty usuarioController.selected}" />
                    <p:commandButton id="editButton"   icon="ui-icon-pencil" value="#{bundle.Edit}" update=":UsuarioEditForm" oncomplete="PF('UsuarioEditDialog').show()" disabled="#{empty usuarioController.selected}" />
                    <p:commandButton id="deleteButton" icon="ui-icon-trash"  value="#{bundle.Delete}" actionListener="#{usuarioController.destroy}" update=":growl,datalist" disabled="#{empty usuarioController.selected}"/>
                </f:facet>
            </p:dataTable>
        </p:panel>
    </h:form>
    <ui:include src="Create.xhtml"/>
    <ui:include src="Edit.xhtml"/>
    <ui:include src="View.xhtml"/>
</ui:define>

</ui:composition>

Este é o Create.xhtml

<ui:composition xmlns=“http://www.w3.org/1999/xhtml
xmlns:h=“http://java.sun.com/jsf/html
xmlns:f=“http://java.sun.com/jsf/core
xmlns:ui=“http://java.sun.com/jsf/facelets
xmlns:p=“http://primefaces.org/ui
template="/WEB-INF/template.xhtml">

<ui:define name="content">
    <p:dialog widgetVar="UsuarioCreateDialog" modal="true" responsive="true" resizable="false" header="#{bundle.CreateUsuarioTitle}" visible="true">
        <h:form id="UsuarioCreateForm">
            <h:panelGroup id="display">
                <p:panelGrid columns="2" rendered="#{usuarioController.selected != null}">
                    <p:outputLabel value="#{bundle.CreateUsuarioLabel_userCodigo}" for="userCodigo" />
                    <p:inputText id="userCodigo" value="#{usuarioController.selected.userCodigo}" title="#{bundle.CreateUsuarioTitle_userCodigo}" required="true" requiredMessage="#{bundle.CreateUsuarioRequiredMessage_userCodigo}"/>
                    <p:outputLabel value="#{bundle.CreateUsuarioLabel_userUsuario}" for="userUsuario" />
                    <p:inputText id="userUsuario" value="#{usuarioController.selected.userUsuario}" title="#{bundle.CreateUsuarioTitle_userUsuario}" required="true" requiredMessage="#{bundle.CreateUsuarioRequiredMessage_userUsuario}"/>
                    <p:outputLabel value="#{bundle.CreateUsuarioLabel_userSenha}" for="userSenha" />
                    <p:inputText id="userSenha" value="#{usuarioController.selected.userSenha}" title="#{bundle.CreateUsuarioTitle_userSenha}" required="true" requiredMessage="#{bundle.CreateUsuarioRequiredMessage_userSenha}"/>
                </p:panelGrid>
                <p:commandButton actionListener="#{usuarioController.create}" value="#{bundle.Save}" update="display,:UsuarioListForm:datalist,:growl" oncomplete="handleSubmit(args,'UsuarioCreateDialog');"/>
                <p:commandButton value="#{bundle.Cancel}" onclick="UsuarioCreateDialog.hide()"/>
            </h:panelGroup>
        </h:form>
    </p:dialog>
</ui:define>

</ui:composition>

D

E o que não funciona? O que dá erro?

F

Não abre os diálogos, no console do navegador dá a mensagem de erro que widgetVar não foi localizado.

D

Fica muito difícil você se ajudar e postar a mensagem do erro?

F


Essa é a mensagem de erro

F

Tem alguma ideia do que possa ser???

D

Única coisa que me ocorre é que o dialog está fora do form. mas, não me recordo se é isso.
Faz séculos que não mexo com JSF.

A

Por favor detalha/mostra o arquivo que o metodo onclick esta chamando.

M

Acho que nem precisa, esta faltando ele colocar o PF nesse onclick que voce mencionou, apesar que esta dando erro no show também e nesse caso é hide

Pode ficar fora do form, é até uma boa prática isso.

A

Para não trabalhar em cima de achismos por isso que pedi os demais arquivos.

F

<p:commandButton value="#{bundle.Cancel}" onclick=“UsuarioCreateDialog.hide()”/>

Isso é um botão que cancela a operação fechando o dialogo. O estranho é que deixando o código todo em um arquivo só funciona corretamente, mas vai me causar muita repetição de código.

Criado 21 de outubro de 2019
Ultima resposta 25 de out. de 2019
Respostas 12
Participantes 4