Хобрук: Ваш путь к мастерству в программировании

Обновление Ajax выполняется один раз, хотя событие происходит много раз

Я начинаю изучать структуру Primefaces, основанную на JSF и AJAX, и у меня возникают проблемы.

Я пробовал простой пример, такой как inputText, и пытался установить счетчик, который увеличивает свое значение каждый раз, когда нажимается клавиша на inputText. Для этого я использовал AJAX и Bean. Проблема в том, что счетчик увеличивается только в первый раз, после этого он остается прежним. Вот мой код:

ВЕБ-СТРАНИЦА

<!DOCTYPE html>
<html xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui">
<h:head>
    <title>AJAX LISTENER</title>
</h:head>
<h:body>
    <h:form>
        <h:inputText id="counter">
            <p:ajax update="out" event="keypress" listener="#{counterBean.increment}"/>
        </h:inputText>
        <br/>
        AJAX listener = <h:outputText id="out" value="#{counterBean.count}" />
    </h:form>
</h:body>
</html>

БОБ

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean
@RequestScoped
public class counterBean {
    private int count;
    public counterBean() {
        this.count = 0;
    }
    public void increment(){
        this.count = this.count +5;
    }
    public void setCount(int count) {
        this.count = count;
    }
    public int getCount() {
        return count;
    }
}

  • Вы пробовали отладку через событие? Он вызывается каждый раз, когда вы нажимаете кнопку? Если да, то this.count во второй раз снова 0? 21.03.2014

Ответы:


1

Контрбин должен быть просмотрен.

21.03.2014

2

См.: http://www.primefaces.org/documentation

В вашем случае лучшим событием является keyup. Я не думаю, что у него есть событие нажатия клавиши в простых лицах.

Раздел 8.3 в руководстве пользователя 4.0

  • Хорошо, ваш ответ на самом деле очень прост, я провел тестирование и, наконец, осознал всю глупость всего этого...

Ваш ManagedBean имеет только RequestScoped, поэтому он повторно инициализируется при каждом запросе... Измените его на @ViewScoped.

Отличный документ по компонентам: http://balusc.blogspot.com.au/2011/09/communication-in-jsf-20.html#ManagedBeanScopes

21.03.2014
  • Я также пробовал с этим событием. Я читал руководство пользователя PF, но не нашел там решения! PD: есть событие нажатия клавиши :) 21.03.2014
  • О, хорошо, посмотрите мой обновленный ответ, измените область действия вашего компонента :) 21.03.2014
  • Новые материалы

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

    Внедрите OAuth в свои веб-приложения для повышения безопасности
    OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

    Как свинг-трейдеры могут использовать ИИ для больших выигрышей
    По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

    Как построить любой стол
    Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

    Обзор: Машинное обучение: классификация
    Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

    Разработка расширений Qlik Sense с qExt
    Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..