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

#javascript #jsf #richfaces #ajax4jsf

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

Но это не работает. В чем может быть причина?

Комментарии:

1. что не работает? Откуда вы вызываете myfunc()? Тег сценария закрыт неправильно, возможно, это проблема: должно быть </script> .

2. Ну, функцию нужно как-то вызывать

Ответ №1:

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

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

Ответ №2:

 <a4j:jsFunction 
  

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

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

 <script>myfunc(2);</sript>
  

Ответ №3:

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

Два, которые вы найдете особенно полезными, это:

Это:

 <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

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

Комментарии:

1. На самом деле это не отвечает на вопрос.

2. Второй части вопроса не было, когда я ответил, я думал, что он спрашивает, как вызвать его функцию

Ответ №4:

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