2个相互排斥的命令按钮,形式上只有1个有效

时间:2018-12-21 19:14:38

标签: primefaces

在我的login.xhtml文件中,我有1个表单。此表单还包含2个<p:commandButton>,它们是互斥的。

动作指向在我的LoginController Java类中定义的2种不同方法。

当单击带有loginController.login操作的命令按钮时,我的LoginController中的相应方法将被调用。

但是,当单击带有loginController.resetpassword操作的命令按钮时,不会调用LoginController中的相应方法。正在重新加载LoginController,然后再进行其他操作(尝试#1)。

首先,我认为这是因为我无法同时以相同的形式显示2个命令按钮,即使在任何时候都只渲染了其中的1个,但是如果我交换两个操作按钮的操作,则loginController.resetpassword为被叫(尝试#2)!交换代码行并不重要,因此带有命令按钮的代码行以另一种顺序读取(尝试#3)。

对于某些阅读,似乎我只能使用id=loginButton才能使用命令按钮?

我不在我的faces-config.xml中使用导航。表单元素的类型为<h:form>

我在做什么错? Java 8,Primefaces 6.1

尝试#1:默认代码

<p:commandButton id="resetpasswordButton" 
    value="#{msg['reset_password']}" 
    action="#{loginController.resetpassword}" 
    rendered="${not empty param.pw_reset}"
/>  <!-- #resetpasswordButton button does not work -->


<p:commandButton id="loginButton" 
    value="#{msg['login']}" 
    action="#{loginController.login}" 
    rendered="${empty param.pw_reset}" 
/>  <!-- #loginButton button works, calling login() -->

尝试#2:切换了动作

<p:commandButton id="resetpasswordButton" 
    value="#{msg['reset_password']}" 
    action="#{loginController.login}" 
    rendered="${not empty param.pw_reset}"
/>  <!-- #resetpasswordButton button does not work -->

<p:commandButton id="loginButton" 
    value="#{msg['login']}" 
    action="#{loginController.resetpassword}" 
    rendered="${empty param.pw_reset}" 
/>  <!-- #loginButton button works, calling resetpassword() -->

尝试#3:订单切换

<p:commandButton id="loginButton" 
    value="#{msg['login']}" 
    action="#{loginController.login}" 
    rendered="${empty param.pw_reset}" 
/>  <!-- #loginButton button works, calling login() -->

<p:commandButton id="resetpasswordButton" 
    value="#{msg['reset_password']}" 
    action="#{loginController.resetpassword}" 
    rendered="${not empty param.pw_reset}"
/>  <!-- #resetpasswordButton button does not work -->

0 个答案:

没有答案