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我没有得到错误,如果我删除我的第二个对话框,它将工作良好!然后尝试删除第二个对话框中的内容。一旦确定,删除你发现的属性。这就是调试