#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();
в свой тег скрипта.