我试图通过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");
}
答案 0 :(得分:0)
XHTML中<campo:radio>
的部分内容丢失了。你能编辑一下吗?
您的网络浏览器控制台中是否有任何错误?
在selectOneRadio中添加onclick="this.form.submit();"
可能会有所帮助。
另一个建议是,如果你不坚持使用ajax,请使用valueChangeListener
。
编辑:尝试将change
事件更改为click
事件。我想这会......