在SelectOneRadio JSF中调用方法

时间:2016-06-22 17:48:23

标签: jsf methods primefaces selectoneradio

我试图通过SelectOneRadio组件调用java中的方法,但没有任何反应。但该组件由我公司创建,以接受ENUM。

组件:

<composite:interface>
<composite:attribute name="label" />
<composite:attribute name="value" />
<composite:attribute name="converter" />
<composite:attribute name="lista" />
<composite:attribute name="enumClass" />
<composite:attribute name="id" default="campo"/>
<composite:attribute name="columns" default="1"/>
<composite:attribute name="required" default="false"/>
<composite:attribute name="disabled" default="false"/>
<composite:attribute name="tamanhoTotal" default="12"/>
<composite:attribute name="tamanho" default="10"/>
<composite:attribute name="tamanhoLabel"/>
<composite:attribute name="layout" default="lineDirection"/>

<composite:clientBehavior name="change" event= "change" targets = "campo"/>

<composite:implementation>
        <p:selectOneRadio id="#{cc.attrs.id}" 
                            value="#{cc.attrs.value}" 
                            disabled="#{cc.attrs.disabled}" 
                            columns="#{cc.attrs.columns}" 
                            layout="#{cc.attrs.layout}" 
                            required="#{cc.attrs.required}" 
                            label="#{cc.attrs.label}"
                            converter="#{cc.attrs.converter}"
                            requiredMessage="#{cc.attrs.label}  : Campo obrigatório">
            <f:selectItems value="#{referenciaMap[cc.attrs.enumClass]}"/>
        </p:selectOneRadio>     

直到现在试试这个:

这是我的XHTML:

<campo:radio enumClass="StatusTituloEnum"
                                                            label="Situação" tamanho="1" tamanhoTotal="1"
                                                            columns="1" layout="grid"
                                                            disabled="#{!recTituloCriteria.disableRadioStatus}"
                                                            converter="#{StatusTituloConverterById}">
                                                            <p:ajax event="change" process="@this"
                                                                    update=":form:idTabela" listener="#{recTituloCriteria.handleKeyEvent}" />
                                                        </campo:radio>

这是我在JAVA中的方法:

    public void handleKeyEvent() {
    //text = text.toUpperCase();
    System.out.println("hi");
}

1 个答案:

答案 0 :(得分:0)

XHTML中<campo:radio>的部分内容丢失了。你能编辑一下吗? 您的网络浏览器控制台中是否有任何错误?

在selectOneRadio中添加onclick="this.form.submit();"可能会有所帮助。

另一个建议是,如果你不坚持使用ajax,请使用valueChangeListener

编辑:尝试将change事件更改为click事件。我想这会......