【问题标题】:Command button action not called未调用命令按钮操作
【发布时间】:2012-07-26 18:32:12
【问题描述】:

我有以下情况:

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

当我单击按钮时,我的 bean 中的 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() 没有被调用,我不明白为什么。调用了用户名的 setter,但 loginAction 没有。

我正在使用 JSF 2.0,Primefaces 3.3。

非常感谢。

【问题讨论】:

    标签: jsf-2 primefaces


    【解决方案1】:

    我假设您的控制台也没有出现错误,对吧?如果是这种情况,我建议在您的表单中添加&lt;p:messages autoUpdate="true" /&gt; 以查看是否存在一些验证错误或其他问题。

    【讨论】:

      【解决方案2】:

      如果我使用

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

      方法 loginAction 被调用。

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

      【讨论】:

      • h:commandButton 没有ajax 属性,可以省略。如果您不嵌入 f:ajax,则 h:commandButton 是一个非 ajax 按钮并触发完整的表单提交。
      • 谢谢你!真的,JSF 应该在处于开发状态时将其记录在控制台中。
      • 就像 PrimeFaces p:commandButtonajax="false"。应该没什么区别
      猜你喜欢
      • 1970-01-01
      • 2015-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-29
      • 2012-10-28
      • 2012-05-13
      相关资源
      最近更新 更多