Forms <;h:形式动作="#{bean.method()}"&燃气轮机;被叫了两次

Forms <;h:形式动作="#{bean.method()}"&燃气轮机;被叫了两次,forms,jsf,Forms,Jsf,我正在编写一个用于更改密码的JavaEE应用程序。为了获取新旧密码输入,我使用了jsf表单 <h:form method="post" action="#{changePass.updatePassword()}" > <h:inputText id="username" value = "#{changePass.username}" readonly="true" required="true"/> <h:inputSecret id="o

我正在编写一个用于更改密码的JavaEE应用程序。为了获取新旧密码输入,我使用了jsf表单

 <h:form method="post" action="#{changePass.updatePassword()}" >
     <h:inputText id="username" value = "#{changePass.username}" readonly="true" required="true"/>
     <h:inputSecret id="oldPassword" value = "#{changePass.oldPassword}" required="true" />
     <h:inputSecret id="newPassword" value = "#{changePass.newPassword}" required="true" />
     <h:inputSecret id="confirmPassword" value = "#{changePass.confirmPassword}" required="true" />
     <button id="update" type="submit"></button>
 </h:form>

我的意图是在用户单击按钮时调用ChangePassBean类中的updatePassword()函数。但是这个函数在这种形式下会被调用两次

  • 当窗体加载时
  • 当用户在按钮上计时时

  • 如何在表单加载过程中避免此调用?

    您的xhtml应该如下所示:

         <h:form>
            <h:inputSecret id="newPassword" value = "#{changePass.newPassword}" required="true" />
    
    
             <h:commandButton value="submit" action="#{changePass.updatePassword}" />
         </h:form>
    
    
    

    如果这仍然不起作用,那么您的bean就存在smtg错误。此外,您可能还需要学习一些教程。我不完全确定您使用的语法是否错误,但这是我第一次看到它。

    您能发布bean吗?您能删除表单标签中的所有属性吗?它是否有效,请检查我的其他评论。在帖子中并没有标签,并把一个真正的按钮和行动放在里面。若那个有帮助,接受作为答案并投票。低声望的会员很少投票给我(.你在哪里学的JSF?你似乎从未见过/尝试过一个简单的Hello World示例,如我们的wiki页面中所示