我不能得到一个f:ajax
侦听器在最简单的JSF 2.2页面上工作。值被分配,但听者是耳聋的。奇怪的是,如果我将h:selectOneRadio
替换为h:selectOneMenu
,那么相同的代码工作得非常好。下面是HTML:奇怪的问题与h:selectOneRadio在Apache Tomee 7.0.1
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:h="http://xmlns.jcp.org/jsf/html">
<h:head>
<title>Test</title>
</h:head>
<h:body>
<h:form id="f" >
<h:selectOneRadio id="r" value="#{test.mode}">
<f:selectItem itemValue="One"/>
<f:selectItem itemValue="Two"/>
<f:selectItem itemValue="Three"/>
<f:ajax render="@form" execute="@form" listener="#{test.listener2()}"/>
</h:selectOneRadio>
<br/>
<h:outputText id="out" value="#{test.mode}"/>
</h:form>
</h:body>
</html>
和bean:
@Named
@SessionScoped
public class Test implements Serializable {
private final static Logger LOG = Logger.getLogger(Test.class.getName());
private String mode;
public String getMode() {
return mode;
}
public void setMode(String mode) {
this.mode = mode;
LOG.info("Mode setter: " + mode);
}
public void listener1(AjaxBehaviorEvent event) throws AbortProcessingException {
LOG.info("Mode listener 1: " + mode);
}
public void listener2() {
LOG.info("Mode listener 2: " + mode);
}
}
无论听者方法类型都为h:selectOneRadio
解雇。把豆做成@ManagedBean
并使用不同的ajax事件类型也没有帮助。
将Apache Tomee升级到版本7.0.1(MyFaces 2.2.10,JSF 2.2)后出现此问题。 MyFaces与2.2.11同样存在问题。
Web应用捆绑在一个耳朵里,没有其他的JSF库被加载,没有Primefaces和类似的,没有servlet过滤器,什么也没有 - 一个纯粹的JSF 2.2应用程序。
任何想法?
尝试添加一个明确的事件是'F:ajax' – Kukeltje
@Kukeltje没什么区别,测试其中的大多数。 – Osw
哎呀,我错过了,你已经提到过...对不起......如果我理解正确,调用listener1也不起作用(xhtml中没有括号)?添加“h:messages”时的任何信息?当你在开发模式下运行应用程序时会发生什么? – Kukeltje