2014-01-28 3 views
0

Я вызываю функцию на стороне клиента так: invalidateUserSession(). Я знаю, что клиентская функция запускается, потому что я помещал предупреждение в незавершенное событие. По какой-то причине метод серверной стороны никогда не называется.a4j jsФункция не запускается на стороне сервера

Client код сторона:

<a4j:jsFunction 
    name="invalidateUserSession" 
    action="#{billingController.invalidateSession}" 
    immediate="true" 
    oncomplete="alert('invalidate');" 
/> 

сервера код сторона:

public void invalidateSession(){ 
    log.info("Invalidation session..."); 
    FacesContext.getCurrentInstance().getExternalContext().invalidateSession(); 
} 
+1

Любая причина, по которой вы используете 'непосредственный' здесь? Вы пробовали без него? Также проверьте, не указана ли установка полного 'action = '# {billingController.invalidateSession()}'. И просто проверяя очевидное, вы поставили там точку останова и заметили, что она никогда не попадает, так что вы можете утверждать: «никогда называемый «? – mabi

+0

@mabi, удаляя немедленное =« true », сделал это. Опубликуйте свой комментарий в качестве ответа, чтобы я мог его принять. – Fabii

ответ

1

Согласно комментариям, просто удалите immediate=true из тега.

Обязательная ссылка: Debugging JSF lifecycle

Также обратите внимание, что you are still displaying the user's data и может перенаправить/повторно получить страницу после завершения сеанса недействительности.

0

Ваши действия должны возвращать объект, например String. См action атрибут descption в VDL documentation:

MethodExpression, представляющий действие приложения для вызова, когда этот компонент активируется пользователем. Выражение должно оцениваться публичным методом, который не принимает параметров и возвращает объект (toString() которого вызывается для вывода логического результата ), который передается в NavigationHandler для этого приложения.

Простая замена void на String в сигнатуре метода.

+1

Несмотря на то, что VDL говорит, что это не [на самом деле] (http://stackoverflow.com/a/8744193/785663). «Возвращение» 'void' - это то же самое, что и« null ». – mabi

+0

Спасибо @mabi, я не знал об этом. –

 Смежные вопросы

  • Нет связанных вопросов^_^