在我的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 -->