如何使用<a4j:jsfunction> <a4j:actionparam> </a4j:actionparam> </a4j:jsfunction>

时间:2011-09-28 08:58:26

标签: javascript jsf richfaces ajax4jsf

我正在尝试使用:

<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>

但它不起作用。可能是什么原因?

4 个答案:

答案 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();