【问题标题】:JSF commandbutton works on second and subsequent click [duplicate]JSF 命令按钮适用于第二次和后续单击 [重复]
【发布时间】:2016-04-07 20:22:40
【问题描述】:

JSF 命令按钮适用于第二次和后续点击,但不适用于初始点击。我正在使用 JSF 2.2!

我看到有一种解决方法可以通过添加一个 selectBooleanCheckbox 标记来解决这个问题,强制每次单击复选框调用 JSF 请求,而不是等待 commandButton 提交。这样,当单击 commandButton 时,所有复选框都已处理,如 this 帖子中所示。

我想知道是否有一种方法可以让命令按钮本身在第一次单击时工作而无需添加任何额外的复选框。有什么想法吗?

下面是我正在处理的code-sn-p,

<h:commandButton event="click" value="Send">
  <f:ajax listener="#{managedBeanName.methodToExcecute}"/>
</h:commandButton> 

【问题讨论】:

  • 这个命令按钮是否是表单的一部分,其父组件是由另一个 ajax 请求预先呈现的?
  • 是的,没错。该组件正在由 ajax 请求(通过 Richfaces 的 a4j:commandButton)呈现。
  • 好的。答案在副本中。将来尝试创建一个 MCVE。表现得好像您正在尝试回答自己的问题,并尝试仅根据目前提供的信息在暂存器项目中重现所描述的问题。你很快就会发现你的问题是不完整的,真正的问题在别处。另见stackoverflow.com/tags/jsf/info

标签: ajax jsf jsf-2.2


【解决方案1】:

以下代码适用于 JSF 2.2.4 和 Java 1.8_73 在 tomcat 8 中。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://xmlns.jcp.org/jsf/html"
    xmlns:f="http://xmlns.jcp.org/jsf/core"
    xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
<h:head>
    <title>test page</title>
</h:head>
<h:body>
    <h:form>
        <h:commandButton event="click" value="Send">
            <f:ajax listener="#{myBean.methodToExcecute}" />
        </h:commandButton>
    </h:form>
</h:body>
</html>

托管 Bean

package com.test;

import java.io.Serializable;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

@ManagedBean
@RequestScoped
public class MyBean implements Serializable {

    public void methodToExcecute() {
        System.out.println("methodToExcecute");
    }
}

第一次点击时.. 控制台日志:methodToExcecute

【讨论】:

  • 我在 JBoss 应用服务器上运行它。除了我之前有一个 Session Scope 之外,其余代码没有变化。我尝试使用请求范围,但不知何故我的应用程序不接受它。同样,它与 View Scope 的工作方式相同,它提供所需的输出,但必须单击该按钮两次。
  • 所有应有的尊重,“为我工作”不是解决问题中所述具体问题的答案,因此完全没有帮助。提问者本身也非常清楚这段代码应该可以工作,但它不适合他们(这通常也是提问者在这里发布问题的唯一原因;提问者只是想让他们解释/解决问题)。因此,任何根本没有解释/解决问题的“为我工作”的帖子都是完全没有帮助的。下次您无法根据目前提供的信息重现问题时,只需对该问题发表评论即可。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-25
  • 2018-05-19
  • 1970-01-01
  • 1970-01-01
  • 2013-06-13
  • 1970-01-01
相关资源
最近更新 更多