Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 为什么我的对话没有';不行?_Jsf_Primefaces - Fatal编程技术网

Jsf 为什么我的对话没有';不行?

Jsf 为什么我的对话没有';不行?,jsf,primefaces,Jsf,Primefaces,我有一个对话框,当页面重新加载时打开,并要求登录。这是完美的工作,直到我创建了另一个对话框,打开时,我点击一个按钮。两个都有不同的名字,我现在叫对了!我真的不知道怎么了 现在,当我重新加载页面时,它会显示登录对话框,我输入了正确的登录名和密码,但它拒绝了。。但是如果我删除另一个对话框并做同样的事情,它就会工作 我的代码: <body onload="PF('dlgLogin').show();"> <h:form name="">

我有一个对话框,当页面重新加载时打开,并要求登录。这是完美的工作,直到我创建了另一个对话框,打开时,我点击一个按钮。两个都有不同的名字,我现在叫对了!我真的不知道怎么了

现在,当我重新加载页面时,它会显示登录对话框,我输入了正确的登录名和密码,但它拒绝了。。但是如果我删除另一个对话框并做同样的事情,它就会工作

我的代码:

<body onload="PF('dlgLogin').show();">
        <h:form name="">
            <p:growl id="growl" sticky="true" showDetail="true" life="2000" />

            <p:dialog header="Login" widgetVar="dlgLogin" modal="true" closable="false" resizable="false">
                <h:panelGrid columns="2" cellpadding="5">
                    <h:outputLabel for="login" value="Username:" />
                    <p:inputText id="login" value="#{loginView.login}" required="true" label="Login" />
                    <h:outputLabel for="password" value="Password:" />
                    <p:password id="password" value="#{loginView.senha}" required="true" label="Password" />
                    <f:facet name="footer">
                        <p:commandButton value="Login" update="growl" action="#{loginView.login}"
                                         oncomplete="handleLoginRequest(xhr, status, args)" />
                    </f:facet> 
                </h:panelGrid>
            </p:dialog>

            <p:dialog header="Nova classificação" widgetVar="dlgClassificacao" modal="true" resizable="false">
                <h:panelGrid columns="2" cellpadding="5">
                    <h:outputLabel for="nome" value="Nome:" />
                    <p:inputText id="nome" value="#{adminView.classNome}" required="true" label="Nome" />
                    <h:outputLabel for="valor" value="Valor:" />
                    <p:inputText id="valor" value="#{adminView.classPreco}" required="true" label="Valor" />
                </h:panelGrid>
                <f:facet name="footerAdicionar">
                    <p:commandButton value="Adicionar" action="#{adminView.novaClassificacao}" />
                </f:facet>
            </p:dialog>

            <p:layout>
                <p:layoutUnit position="center">

                    <p:dataTable id="classificacoes" selection="#{adminView.selectedClassificacao}" var="classificacao" value="#{adminView.classificacoes}" style="margin-bottom:20px">

                        <p:ajax event="rowSelect" listener="#{adminView.onRowSelect}"/>

                        <p:column>
                            <f:facet name="header">
                                <h:outputText value="Nome" />
                            </f:facet>
                            <h:outputText value="#{classificacao.nome}" />
                        </p:column>

                        <p:column>
                            <f:facet name="header">
                                <h:outputText value="Valor" />
                            </f:facet>
                            <h:outputText value="#{classificacao.preco}" />
                        </p:column>
                    </p:dataTable>
                    <f:facet name="footer">
                        <p:commandButton title="Novo" icon="ui-icon-document" onclick="PF('dlgClassificacao').show();" type="button"/>
                        <p:commandButton title="Editar" icon="ui-icon-pencil" />
                        <p:commandButton title="Deletar" icon="ui-icon-trash" update="classificacoes" actionListener="#{adminView.excluirClassificacao}"/>
                    </f:facet>

                </p:layoutUnit>
            </p:layout>

        </h:form>
        <script type="text/javascript">
            function handleLoginRequest(xhr, status, args) {
                if(args.validationFailed || !args.loggedIn) {
                    PF('dlg').jq.effect("shake", {times:5}, 100);
                }
                else {
                    PF('dlg').hide();
                    $('#loginLink').fadeOut();
                }
            }
        </script>
    </body> 

函数handleLoginRequest(xhr、状态、参数){
if(args.validationFailed | | |!args.loggedIn){
PF('dlg').jq.effect('shake',{times:5},100);
}
否则{
PF('dlg').hide();
$(“#loginLink”).fadeOut();
}
}

问题在于,按下登录按钮时,您正在发送所有表单数据。然后,您将获得消息,表明您(自然)没有为
Nome
Valor
字段键入任何数据

您可以通过在登录对话框和表单中添加id属性,以及在登录按钮中添加流程属性来修复此问题:

<p:commandButton process=":yourForm:dlgLogin" value="Login" 
    update="growl" action="#{loginView.login}" />


控制台中有错误吗
F12
@Geinmachi:这只是上帝形式的反模式。Gustavo,注意验证错误消息中的字段名。没有错误@Geinmachi@BalusC我没有得到错误,如果我删除我的第二个对话框,它将工作良好!然后尝试删除第二个对话框中的内容。一旦确定,删除你发现的属性。这就是调试