У меня есть компонент раскряжевки, связанный со страницей, и я хочу изменить его значение в зависимости от того, завершилась ли проверка или завершилась успешно.
@ManagedBean(name = "testBean")
@ViewScoped()
public class TestBean implements Serializable {
String value="";
int number;
/*getters-setters*/
}
Валидатор, который проверяет, является ли число положительным
@FacesValidator("Validator")
public class NumValidator implements Validator{
@Override
public void validate(FacesContext context, UIComponent component,
Object value) throws ValidatorException {
int num=(Integer)value;
if(num<0){
FacesMessage msg =
new FacesMessage(The number is negative");
msg.setSeverity(FacesMessage.SEVERITY_ERROR);
throw new ValidatorException(msg);
}
}
}
И страницу xhmtl:
<h:form>
<h:inputText id="number" value="#{testBean.number}" required="true"
requiredMessage="Is">
<f:validator validatorId="Validator" />
<f:ajax event="blur" render="msg" />
</h:inputText>
<h:message id="msg" for="number"/>
</h:form>
И я хочу, чтобы строка в bean-компоненте имела значение = "негативный" или значение = "положительный" независимо от случая. Как это может быть сделано?
1 ответ
Ваши конкретные функциональные требования, по-видимому, сводятся к:
Как изменить класс стиля
<h:inputText>
при ошибке проверки?
В этом случае просто проверьте UIInput#isValid()
в EL. Текущий компонент пользовательского интерфейса доступен только для неявного объекта EL а> #{component}
.
<h:inputText ... styleClass="#{component.valid ? 'positive' : 'negative'}">
<f:ajax ... render="@this msg" />
</h:inputText>
Обратите внимание, что я добавил @this
в render
, иначе сам компонент не будет обновлен.
Вы не должны загрязнять модель специфичными для представления свойствами, такими как классы CSS. Вы должны стараться держать их в поле зрения как можно дольше. Это приведет к более «естественным» решениям.
#{facesContext.postback}
. Например. styleClass="#{facesContext.postback ? component.valid ? 'positive' : 'negative' : 'start'}"
.
Похожие вопросы
Связанные вопросы
Новые вопросы
validation
Валидация используется для проверки данных на предмет соответствия требуемым спецификациям. Обычно проверка используется при проверке входных данных и при проверке данных перед хранением.
<f:validateLongRange>
, если все, что вам нужно, это проверить, не является ли значение отрицательным.