Использование Primefaces JavaScript для вызова метода JSF для bean-компонента на сервере - PullRequest
5 голосов
/ 25 января 2011

В руководстве пользователя Primefaces приведены примеры того, как выполнять вызовы AJAX на сервер

PrimeFaces.ajax.AjaxRequest('/myapp/createUser.jsf',
{
    formId: 'userForm',
    oncomplete: function(xhr, status) {alert('Done');}
});

Что я не могу понять, так это как вызывать определенный метод. Моя цель состоит в том, чтобы аннулировать сеанс с клиента с помощью JavaScript.

Ответы [ 3 ]

16 голосов
/ 18 декабря 2012

RemoteCommand - это хороший способ для достижения этой цели, поскольку он предоставляет вам функцию JavaScript, которая выполняет всю работу (вызов вспомогательного компонента, обновление, отправка формы и т. Д., Все, что может сделать ссылка на команду).

Из документации PrimeFaces 3.4 :

<p:remoteCommand name="increment" actionListener="#{counter.increment}"
out="count" />

<script type="text/javascript">
function customFunction() {
    //your custom code
    increment(); //makes a remote call
}
</script>
4 голосов
/ 06 января 2012

Что я обычно делал, так это помещал скрытый p: commandLink на страницу, а затем заставлял Javascript вызывать событие click ().

<p:commandLink id="hiddenLink" 
   actionListener="#{bean.methodToInvoke}" style="display:none"/>

Тогда

$('#hiddenLink').click();
1 голос
/ 25 января 2011

Сделайте это в методе @PostConstruct объекта запроса, который связан с требуемой страницей JSF посредством EL, как #{bean}.

@ManagedBean
@RequestScoped
public class Bean {

    @PostConstruct
    public void init() {
        // Here.
    }

}

Не имея отношения к вопросу, я только удивляюсь, почему ты так поступил? JSF / PrimeFaces предлагает гораздо более приятные способы использования <f:ajax> и <p:ajax> и консортов.

Намерено ли это запустить во время событий unload или beforeunload в Windows? Если так, то я должен предупредить вас, что это ненадежно. От браузера зависит, дойдет ли такой запрос до сервера или нет. Более чем часто это не так. Используйте его только для статистической или преждевременной очистки, но не для конфиденциальных бизнес-целей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...