2013-12-12 6 views
-2

У меня есть страница JSF, созданная с использованием Prime Faces 3.3 и должна быть способна включить компонент, когда пользователь начинает вводить текст во входном текстовом поле. В текстовом поле реализовано в виде ах: inputText компонент - Я пробовал различные слушатель, такие какКак обнаружить текстовую запись для элемента управления h: inputText

valueChangeListener = «# {} managedbean.onValueChange»

но значение только получает получили, как только форма представляется не тогда, когда текст меняется. Есть ли способ обнаружить это?

Благодаря

+0

напишите свой код. – Makky

+0

Добавление его ниже. – user3095976

+0

public void onValueChange (событие ValueChangeEvent) { \t Компонент UIComponent = event.getComponent(); \t Строка clientId = component.getClientId(); \t \t если ("SelectItemComponent" .equals (ClientId) \t \t // Включить другой компонент здесь \t \t } \t если ("TextFieldComponent" .equals (ClientId)) { \t \t Строка textFieldValue = (String) event.getNewValue(); \t \t // Включить другой компонент здесь \t \t } } – user3095976

ответ

1

Это, как вы могли бы сделать

XHTML страница

<h:form id="form"> 

    <h:panelGrid columns="2"> 


     <p:inputText id="counter"> 
      <p:ajax event="keyup" 
        listener="#{counterBean.increment}"/> 
     </p:inputText> 


    </h:panelGrid> 

</h:form> 

BACKBEA

import java.io.Serializable; 

public class CounterBean implements Serializable{ 


    public void increment() { 
     //do something 
    } 
} 

Всякий раз, когда вы печатаете что-то это будет вызовите метод increment.

+0

Спасибо - это хорошее решение проблемы, и оно работает для меня, но оно отправляет слишком много вызовов на сервер - есть ли какие-либо события, которые я могу сделать, чтобы сделать его проще? – user3095976

+0

Это ваше требование. Как бы вы хотели, чтобы это было проще? – Makky

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