我正在尝试使用:
<script type="text/javascript">
function myfunc() {
var param = 4;
alert("OK");
}
</script>
我这样称呼函数:
<a4j:jsFunction name="myfunc">
<a4j:actionparam name="param" assignTo="#{MyBean.myfield}"/>
</a4j:jsFunction>
但它不起作用。可能是什么原因?
答案 0 :(得分:10)
你误解了<a4j:jsFunction>
的目的。它自动生成一个JavaScript函数,然后您可以从视图中的任何JavaScript代码调用它。
你的例子,
<a4j:jsFunction name="myfunc">
<a4j:actionparam name="param" assignTo="#{MyBean.myfield}"/>
</a4j:jsFunction>
将自动生成以下功能
<script>
function myfunc(param) {
// Here some specific JSF Ajax script which assigns "param"
// to a managed bean property #{MyBean.myfield}
}
</script>
你不需要自己定义。您只需要从其他地方的某些JavaScript代码中自己调用它。例如,
<span onclick="myfunc(4)">click here to set 4 in MyBean.myfield</span>
或
<script>
function someOtherFunction() {
var param = 4;
myfunc(param);
}
</script>
反过来像
一样使用<span onclick="someOtherFunction()">click here to call someOtherFunction() which will in turn set 4 in MyBean.myfield</span>
答案 1 :(得分:4)
<a4j:jsFunction
不用于调用函数,它用于定义函数。
因此,如果MyBean.myfield是一个int字段,您可以使用:
设置值2<script>myfunc(2);</sript>
答案 2 :(得分:1)
有许多不同的方法来调用该函数。
两个你会发现特别有用的是:
:此:强>
<body onload="myfunc();">
示例:http://ultimatemmo.webege.com/Test.html
并且:
<a href="#" onclick="myfunc();">Click here to execute function</a>
示例:http://ultimatemmo.webege.com/Test2.html
修改:添加了示例。
答案 3 :(得分:0)
根据您的代码片段,您从未调用过您的函数。在脚本代码中添加myfunc();
。