f:ajax onevent不能使用预定义函数,但可以使用内联函数

时间:2012-12-10 03:08:31

标签: ajax jsf

我有一个<h:commandButton>,可以通过<f:ajax>提交表单。

<h:commandButton  value="Create Project" styleClass="greyishBtn submitForm">
    <f:ajax execute="@form" listener="#{projectController.create}" 
        render=":tblProject" />
</h:commandButton>

它可以正常工作,但是当我尝试添加onevent属性时:

<f:ajax execute="@form" listener="#{projectController.create}"
    onevent="createProjectEventHandler" render=":tblProject" />

使用已包含的JavaScript:

function createProjectEventHandler(data){
    console.log('sth happened');
}

然后单击按钮,然后重新加载页面。我没有看到任何已经提交回托管bean的内容,也没有在控制台上提交任何内容。

这是如何引起的?如何解决?


更新:它适用于以下方法:

<f:ajax execute="@form" listener="#{projectController.create}" 
    onevent="function(data) {console.log('aaa');}" render=":tblProject" />

为什么会这样?根据{{​​3}},onevent属性应支持JavaScript函数名称。

1 个答案:

答案 0 :(得分:-1)

我在Netbeans中遇到了同样的问题。

当我在Netbeans中创建我的JSF页面时,它生成xmlns:f="http://xmlns.jcp.org/jsf/core"作为XML名称空间URI。但是当我实际使用JSF 2.0 / 2.1时,那是JSF 2.2特有的。

当我将XML名称空间URI更改为xmlns:f="http://java.sun.com/jsf/core"时,它对我有效。