如何使用<a4j:jsFunction> <a4j:actionparam>

Mic*_*ael 6 javascript jsf richfaces ajax4jsf

我正在尝试使用:

<script type="text/javascript">
      function myfunc() {
         var param = 4;
         alert("OK");
      }
</script>
Run Code Online (Sandbox Code Playgroud)

我把这个函数称为:

<a4j:jsFunction name="myfunc">
    <a4j:actionparam name="param" assignTo="#{MyBean.myfield}"/>
</a4j:jsFunction>
Run Code Online (Sandbox Code Playgroud)

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

Bal*_*usC 10

你误解了目的<a4j:jsFunction>.它会自动生成一个JavaScript函数,然后您可以从视图中的任何JavaScript代码调用它.

你的例子,

<a4j:jsFunction name="myfunc">
    <a4j:actionparam name="param" assignTo="#{MyBean.myfield}"/>
</a4j:jsFunction>
Run Code Online (Sandbox Code Playgroud)

自动生成以下功能

<script>
    function myfunc(param) {
        // Here some specific JSF Ajax script which assigns "param"
        // to a managed bean property #{MyBean.myfield}
    }
</script>
Run Code Online (Sandbox Code Playgroud)

不是需要自己定义.您只需要从其他地方的某些JavaScript代码中自行调用它.例如,

<span onclick="myfunc(4)">click here to set 4 in MyBean.myfield</span>
Run Code Online (Sandbox Code Playgroud)

要么

<script>
    function someOtherFunction() {
        var param = 4;
        myfunc(param);
    }
</script>
Run Code Online (Sandbox Code Playgroud)

反过来也被用作

<span onclick="someOtherFunction()">click here to call someOtherFunction() which will in turn set 4 in MyBean.myfield</span>
Run Code Online (Sandbox Code Playgroud)

也可以看看: