Dialog does not open

0

When I click on the new button it should open a dialog box but it does not open and gives this error in the console:

  

widget for var 'test' not available

What can it be?

<ui:define name="menu">
    <ui:include src="/includes/menuPrincipal.xhtml"></ui:include>
</ui:define>



<ui:define name="conteudo">
    <h:form>
        <p:dataTable emptyMessage="Nenhum registro encontrado"
            value="#{MBFrabicante.itens}" var="item" paginator="true" rows="10">

            <f:facet name="header">
                Fabricante - listagem
            </f:facet>

            <p:column headerText="Código" sortBy="#{item.codigo}"
                filterBy="#{item.codigo}">
                <h:outputText value="#{item.codigo}" />
            </p:column>

            <p:column headerText="Descrição">
                <h:outputText value="#{item.descricao}"></h:outputText>
            </p:column>

            <f:facet name="footer">
            <p:commandButton value="Novo" onclick="PF('teste').show();" />
            </f:facet>
        </p:dataTable>
    </h:form>
</ui:define>

<p:dialog widgetVar="teste" resizable="false" header="Fabricante - Novo"
        modal="true" appendTo="@(body)">
    <h:form>
        <h:panelGrid columns="2">
            <p:outputLabel value="Descrição: "></p:outputLabel>
            <p:inputText size="30" maxlength="50" />
        </h:panelGrid>
        <h:panelGrid columns="2">
            <p:commandButton value="Gravar" />
            <p:commandButton value="Cancelar" onclick="PF('dlgFabNovo').hide();" />
        </h:panelGrid>
    </h:form>
</p:dialog>

    
asked by anonymous 05.01.2015 / 22:38

2 answers

1

I already had this problem, I decided to put the modal="false". I can not explain why the problem with modal="true".

<p:dialog widgetVar="teste" resizable="false" header="Fabricante - Novo"
        modal="false" appendTo="@(body)">
    
13.01.2015 / 14:31
0

Hello! Taking a quick look I noticed a few details that you overlooked inattention. First of all, know that all action components of primefaces (commandXXXX) by default already make requests via ajax. When you put a button inside a form, when it is clicked, the form will be submitted to the managedbean and if there is no navigation, the current page will only be reloaded. Knowing this, I make the following considerations about your code:

1 - Putting type="button" on the button, your button will not submit the form (and you do not want to submit your form just open the form so I realized)

2 - The action of your cancel button is trying to access the widgetvar of a component that does not exist on the page. I think you want to close the dialog in this action and therefore should have used "test" for the PF function of primefaces

3 - If the 2 points above do not solve, try to put the dialog inside the tag ui: define

In the end, using the 3 points, it would look like this:

<ui:define name="conteudo">
    <h:form>
        <p:dataTable>        
            (...)
            <f:facet name="footer">
                <p:commandButton value="Novo" onclick="PF('teste').show();" type="button"/>
            </f:facet>

        </p:dataTable>
    </h:form>
    <p:dialog widgetVar="teste" resizable="false" header="Fabricante - Novo"
              modal="true" appendTo="@(body)">      
        <h:form>
            <h:panelGrid columns="2">
                <p:outputLabel value="Descrição: "></p:outputLabel>
                <p:inputText size="30" maxlength="50" />
            </h:panelGrid>

            <h:panelGrid columns="2">
                <p:commandButton value="Gravar" />
                <p:commandButton value="Cancelar" onclick="PF('teste').hide();" />
            </h:panelGrid>
        </h:form>
    </p:dialog>
</ui:define>

Anything gives feedback. Good study!

    
17.03.2015 / 19:59