JSF命令按钮适用于第二次和后续点击

时间:2016-04-07 20:22:41

标签: ajax jsf jsf-2.2

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

我发现通过添加selectBooleanCheckbox标记可以解决这个问题,强制每次点击复选框调用JSF请求并且不要等待commandButton提交。通过这种方式,当单击commandButton时,所有复选框都被处理,如this帖子中所示。

我想知道是否有办法让命令按钮本身适用于第一次点击而无需添加任何其他复选框。有什么想法吗?

以下是我正在处理的代码段,

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

1 个答案:

答案 0 :(得分:-2)

下面的代码在tomcat 8中使用Java 1.8_73在JSF 2.2.4中工作。

<!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>

Managed 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");
    }
}

On First Click ..控制台日志:methodToExcecute