Как пользоваться - PullRequest
       81

Как пользоваться

5 голосов
/ 28 сентября 2011

Я пытаюсь использовать:

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

10 голосов
/ 28 сентября 2011

Вы неправильно поняли цель <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>

Смотри также:

4 голосов
/ 28 сентября 2011
<a4j:jsFunction 

не используется для вызова функции, она используется для определения функции.

Таким образом, если MyBean.myfield является int-полем, вы можете установить значение 2, используя:

<script>myfunc(2);</sript>
1 голос
/ 28 сентября 2011

Существует множество способов вызова этой функции.

Два наиболее полезных из них вы найдете:

Это:

<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

Редактировать: добавленопримеры.

0 голосов
/ 28 сентября 2011

Согласно вашему фрагменту кода, вы никогда не вызывали свою функцию. Добавьте myfunc(); в тег скрипта.

...