#jsf
#jsf
Вопрос:
Я пытаюсь выполнить условный стиль в приложении JSF и пытаюсь реализовать его следующим образом
<h:inputText id="contact_phone2" value="#{jobs_Builder.selected.contactPhone2}" title="#{lbl.ContactPhone2}" binding="#{phoneNumberValidator.myComponent}" style="#{phoneNumberValidator.valid ? 'border-color:black;' : 'border-color:red;'}"/>
В PhoneNumberValidator.java
классе у меня есть приведенный ниже код
private UIComponent myComponent;
public UIComponent getMyComponent() {
return myComponent;
}
public void setMyComponent(UIComponent myComponent) {
this.myComponent = myComponent;
}
public boolean isValid(){
UIInput input = (UIInput) myComponent;
String value = input.toString();
return value != null amp;amp; value.length() > 2;
}
Обратите внимание, что логика проверки является фиктивной, а не правильной.
Когда я отлаживаю это, код проверки выполняется только при начальной загрузке страницы, поэтому это не работает во время выполнения. Ожидаемое поведение должно иметь это во время выполнения, поэтому всякий раз, когда пользователь что-то вводит, должна срабатывать логика проверки, и на основе этого стиль должен быть изменен.
Комментарии:
1. Затем вам нужно добавить
f:ajax
к вашему вводу в event=»keyup», если вы хотите, чтобы компонент обновлялся после каждого нажатия клавиши, он будет переоценивать вашstyle
EL.2. Все еще не повезло. Теперь мой код выглядит так. Я добавил
<f:ajax event="keyup"/>
3. Не забывайте, что вам нужно отобразить поле ввода в ajax с помощью
<f:ajax event="keyup" render="@this"/>