Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSF2.1-在selectoneradio中使用AJAX_Java_Ajax_Jsf 2_Jboss7.x - Fatal编程技术网

Java JSF2.1-在selectoneradio中使用AJAX

Java JSF2.1-在selectoneradio中使用AJAX,java,ajax,jsf-2,jboss7.x,Java,Ajax,Jsf 2,Jboss7.x,我试图在我的项目中提出ajax请求,但没有成功 我已经创建了一个带有selectoneradio的xhtml页面,我想使用AJAX来呈现panelgrid 严格地回答您的问题,您不需要像在代码中那样在控制器中创建UIComponent实例来让ajax工作 调用f:ajax将导致在指定的事件上调用控制器属性的setter。如果未指定任何事件,将调用该类UIComponent的默认事件。对于h:selectOneRadio这是valueChange事件 无论如何,您需要为f:selectItems

我试图在我的项目中提出ajax请求,但没有成功

我已经创建了一个带有selectoneradio的xhtml页面,我想使用AJAX来呈现panelgrid



严格地回答您的问题,您不需要像在代码中那样在控制器中创建UIComponent实例来让ajax工作

调用
f:ajax
将导致在指定的事件上调用控制器属性的setter。如果未指定任何事件,将调用该类UIComponent的默认事件。对于
h:selectOneRadio
这是
valueChange
事件

无论如何,您需要为
f:selectItems
提供正确的项目值。如果要设置的属性为字符串,则项值应为字符串。如果属性是已定义的自定义类型,则应创建转换器,以便相应地转换值

在这个测试中,我们设置的值是一个字符串,因此不需要转换器

我为您创建了一个小型测试应用程序:

控制器

页面



就是这样。

我的控制器有一个UIComponent实例,因为它将动态呈现表单。感谢您的观察和回答罗德里戈
<h:selectOneRadio id="tcliente" value="#{clienteMB.tipoCliente}">
  <f:ajax execute="@form" render="sessaoDados" listener=#{cadastroClienteRendererMB.testar}" />
  <f:selectItems value="#{clienteMB.itemValuesTipoCliente}" />
</h:selectOneRadio>
@ManagedBean<br>
@ViewScoped<br>
public class CadastroClienteRendererMB implements Serializable {<br>
...
public void testar() {

    System.out.println("teste");

    if (panel == null)
        panel = new HtmlPanelGrid();

    HtmlOutputText text = new HtmlOutputText();

    text.setValue("teste");

    panel.getChildren().add(text);

  }
}


    @ManagedBean
    @ViewScoped
    public class TestController implements Serializable
    {
        private static final long serialVersionUID = 1L;

        private String teste;

        public String getTeste()
        {
            return teste;
        }

        public void setTeste(String teste)
        {
            this.teste = teste;
        }
    }

<h:form>

    <h:panelGrid id="meuGrid" columns="2">

        <h:outputText value="Servidor" />
        <h:selectOneRadio id="teste" value="#{testController.teste}">
            <f:selectItem itemLabel="JBoss AS7" itemValue="AS7" />
            <f:selectItem itemLabel="GlassFish" itemValue="GF3" />
            <f:ajax execute="@this" render="resultado" />
        </h:selectOneRadio>

        <h:outputText value="Selecionado" />
        <h:outputText id="resultado" value="#{testController.teste}" />

    </h:panelGrid>

</h:form>