2013-09-12 2 views
0

У меня это было несколько раз, но я не могу получить решение. Я хочу сделать вызов функции javascript из класса bean в jsf, и я получаю это, используя следующий код. RequestContext.getCurrentInstance().execute("handleResize()");
и хорошо подходит. Но я хочу дать два параметра для этой высоты и ширины. Как это можно сделать? пожалуйста, помогитеВызов параметризованной функции javascript из управляемого bean-компонента в jsf

+0

Возможно, 'RequestContext.getCurrentInstance(). Execute (" handleResize (100, 200) ");'? – Thilo

+0

Не статические значения. Я пробовал со статическими значениями, и он работает. Но я хочу передать динамические значения. – Nikhil

+0

@nik Приведите пример. –

ответ

4

Вы, кажется, не понимаете, что в контексте Java/JSF все HTML, CSS и JavaScript-код - это просто ваниль String s, и вы, кажется, ожидаете, что HTML/CSS/JS каким-то образом волшебным образом работает внутри кода Java/JSF. Это неправда. Java/JSF является производителем кода HTML/CSS/JS, а не исполнителем. Веббраузер извлекает их всех как один большой String, а затем анализирует и выполняет его.

Если вы хотите вызвать функцию JS с параметрами прилагается, как и когда вы могли бы сделать в реальном коде JS:

handleResize(500, 300); 

И у вас есть такие ценности, как Java-переменные, то вам просто необходимо, чтобы убедиться, что вы пишете Java код таким образом, что именно выше String производится (опять же, это только Java-код, не JS код):

String call = "handleResize(" + w + ", " + h + ")"; 

вы можете заранее проверить, напечатав его на стандартный вывод/регистраторе:

System.out.println(call); 

Он должен напечатать именно желаемый синтаксис функции функционального JS-функции handleResize(500, 300);.

Если это так, то просто передайте, что немодифицировано в RequestContext#execute().

RequestContext.getCurrentInstance().execute(call); 
Смежные вопросы