【发布时间】:2014-08-15 11:06:47
【问题描述】:
我正在使用 Primefaces,并且有一个登录对话框:
<p:dialog widgetVar="dlgLogin" header="Login" modal="true">
<p:outputPanel>
<h:form>
<p:messages for="msgLogin" autoUpdate="true" closable="true" showSummary="true" showDetail="false" severity="error"/>
<p:panel>
<h:panelGrid columns="2">
<p:outputLabel value="User Name"/>
<p:inputText id="userName" value="#{loginBean.userName}"
required="true" requiredMessage="User Name is required"/>
<p:outputLabel value="Password"/>
<p:password id="password" value="#{loginBean.password}"
required="true" requiredMessage="Password is required"/>
</h:panelGrid>
</p:panel>
<p:commandButton icon="ui-icon-arrowrefresh-1-n" value="Cancel" onclick="PF('dlgLogin').hide()"/>
<p:commandButton type="submit" value="Login"
ajax="false" validateClient="true"
oncomplete="handleClose(xhr, status, args);"
action="#{loginBean.login}"/>
</h:form>
</p:outputPanel>
</p:dialog>
提交登录是故意非ajax,所以整个页面都会刷新。
服务器代码是:
FacesContext.getCurrentInstance().addMessage("msgLogin", new FacesMessage(FacesMessage.SEVERITY_ERROR, "Wrong User Name or Password.", "Wrong User Name or Password."));
如果在服务器上登录失败,我想显示一条消息,并让对话框保持打开状态。但它不起作用。
如何做到这一点?
谢谢。
【问题讨论】:
-
你真的需要
ajax="false"吗?如果登录成功,还有其他方法可以刷新页面,并且它作为 ajax 请求工作得很好。 :)
标签: jsf primefaces