2012-04-23 2 views
0

Я использую компонентный компонент rich faces. Я хочу динамические значения, когда пользователь вручную вводит что-то в выбранном компоненте.Параметры динамического выбора Richfaces 4, когда пользовательский тип

<rich:select enableManualInput="true" defaultLabel="start typing for select" value="#{supplierSearchBean.userInput}"> 
         <a4j:ajax event="keyup" execute="@this" listener="#{supplierSearchBean.userInputChange}"/> 
         <f:selectItems value="#{supplierSearchBean.selectOptions}" /> 
         </rich:select> 

Java код следующим

public void userInputChange(ActionEvent ae){ 
     Map map = ae.getComponent().getAttributes(); 
     System.out.println(map.toString()); 

    } 


public void setUserInput(String userInput) { 
     System.out.println("userINput = " + userInput); 
     this.userInput = userInput; 
    } 

Здесь я нашел 2 вопроса 1-й: setUserINput всегда печатают пустую строку, если значение типа пользователя второй: метод слушатель никогда не получите колл.

любая помощь?

+0

U хотите обновить значение на сервере на каждой клавиатуре или на фокусе, потерянном из окна d ... ??? – abhi

+0

на каждой клавиатуре. –

+0

Проверьте, соответствует ли подающая часть тег bcz, и только он отправит форму и обновит сервер и страницу. – abhi

ответ

0

Проблема, скорее всего, в том, что пользователь не вводит выбранное значение, а этот компонент ограничивает допустимые значения указанными элементами выбора. Таким образом, неполный ввод недействителен и не может быть привязан к вашему компоненту.

Я думаю, что вы можете получить ожидаемое поведение, если вместо этого используете rich:autocomplete. Однако, если вы хотите ограничить допустимые значения, возможно, вы можете сохранить свой rich:select и прослушать событие selectitem.

+0

Я опаздываю здесь, но будет слушать selectitem не огонь, пока не будет выбрано что-то из (изначально пустого) списка? Можем ли мы каким-то образом использовать EL2.2 для передачи введенной в настоящее время строки в a4j: ajax listener (возможно, в событии listkeypress)? Что-то вроде Имейте в виду , это размышляет, пока я не вернусь к своей кодовой базе. – mabi

+0

Привет @mabi, я не работал с JSF и RF, так как я опубликовал этот ответ, поэтому я не смогу вам помочь. Я думаю, что самым простым решением остается использовать «rich: autocomplete», который не ограничивает ввод пользователя, поэтому вы сможете привязать его к вашему bean-файлу. –

+0

Вещь 'rich: autocomplete' получает только значения' String', поскольку это поле '' '' '' - если вы не можете использовать конвертер (например, потому что указанная строка не идентифицирует объект однозначно), вы остаетесь с ужасные хаки, такие как установка идентификатора объекта в скрытом поле или что-то в этом роде. – mabi

0

Переопределение getItems Функция в richfaces-utils.js файла в richfaces-core-impl-4.0.0.Final.jar под richfaces-core-impl-4.0.0.Final\META-INF\resources папка.

Изменить состояние толкающих элементов, чтобы быть

if(p != -1) 

вместо

if(p == 0) 

Это должно решить проблему.

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