2012-07-26 53 views
1

我有以下情况:命令按钮动作不叫

<h:form> 
<h:panelGrid columns="2" cellpadding="5"> 
    <p:commandButton id="loginButton" value="Login" ajax="false" 
         action="#{login.loginAction}" /> 
</h:panelGrid> 
</h:form> 

当我按一下按钮,方法则loginAction(),从我的豆,被执行。

如果我有:

<h:form> 

    <h:panelGrid columns="2" cellpadding="5"> 

     <h:outputLabel for="username" value="#{labels.UserName}" /> 
     <p:inputText value="#{login.username}" id="username" 
           required="true" /> 

     <p:commandButton id="loginButton" value="Login" ajax="false" 
         action="#{login.loginAction}" /> 
    </h:panelGrid> 
</h:form> 

在这种情况下,当我按下登录按钮的方法在loginAction()不叫了,我不明白为什么。用户名的设置器被调用,但是loginAction没有。

我使用的是JSF 2.0,Primefaces 3.3。

非常感谢。

回答

1

如果我使用

<h:commandButton id="loginButton" value="Login" ajax="false" 
         action="#{login.loginAction}" /> 

方法的LoginAction被调用。

我将使用h:commandButton而不是p:commandButton。

+0

'h:commandButton'没有'ajax'属性,你可以忽略它。如果你不嵌入'f:ajax',h:commandButton是一个非ajax按钮,并触发完整的表单提交。 – 2012-07-27 07:52:53

+0

谢谢你!实际上,JSF应该在开发状态下将其记录在控制台中。 – lauksas 2014-03-20 19:54:40

3

我假设你没有在你的控制台中得到错误吗?如果是这样的话,我会建议在表单中添加<p:messages autoUpdate="true" />以查看是否存在验证错误或其他问题。