我有这段代码:
<h:form>
<h:commandLink value="Créer un compte" onclick="dlg3.show();"/>
</h:form>
<p:dialog id="modalDialoog" widgetVar="dlg3" draggable="false" resizable="false" dynamic="true" header="Inscription">
<center>
<p:panel id="xyzBody">
<h:form id="inscri-f">
<h:panelGrid id="loginPan" columns="2" bgcolor="White">
<h:outputText value="Nom d'utilisateur :" />
<p:inputText id="username" value="#{demandeBean.login}"></p:inputText>
<h:outputText value="Mot de passe :" />
<p:password id="pwd" value="#{demandeBean.pwd}"/>
<h:commandButton value="Envoyer demande" update=":inscri-f:cr"
actionListener="#{demandeBean.envoi_dde}"></h:commandButton>
<h:commandButton value="Retour" action="page1?faces-redirect=true"></h:commandButton>
<p:outputPanel id="cr">
<h:outputText rendered="#{demandeBean.saved}" value="#{demandeBean.message}"/>
</p:outputPanel>
</h:panelGrid>
</h:form>
</p:panel>
</center>
</p:dialog>
我的问题是当我点击commandLink“Créeruncompte”对话框显示时它会很快消失。
答案 0 :(得分:4)
这是因为<h:commandLink>
在表单上执行提交,将数据发送到服务器,服务器将处理请求,服务器将生成响应并将其发送给客户端,从而获得< em>刷新在浏览器中的行为。
轻松修复(针对此方案),在return false;
的末尾添加onclick
以停止form
提交。
<h:commandLink value="Créer un compte" onclick="dlg3.show(); return false;"/>
正如BalusC评论中所述,开始使用<form>
会更容易,所以只使用普通<a>
:
<a onclick="dlg3.show();">Créer un compte</a>
答案 1 :(得分:-1)
您也可以使用<p:commandlink ...oncomplete="dlg3.show();" />
代替<h:commandlink onclick =.... />
它将确保在backing bean中设置值