У меня есть специальный конвертер:
@ManagedBean
@RequestScoped
public class MeasureConverter implements Converter {
@EJB
private EaoMeasure eaoMeasure;
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
if (!(value instanceof Measure) || ((Measure) value).getId() == null) {
return null;
}
return String.valueOf(((Measure) value).getId());
}
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
if (value == null || !value.matches("\\d+")) {
return null;
}
Measure measure = eaoMeasure.find(Integer.valueOf(value));
if (measure == null) {
throw new ConverterException(new FacesMessage("Unknown Measure ID: " + value));
}
return measure;
}
Но я хотел бы проверить это, как я делаю с другими полями, например, вот так:
<h:outputLabel for="name" value="Name:" />
<h:inputText id="name" value="#{bean.name}">
<f:ajax event="blur" listener="#{validator.name}" render="m_name" />
</h:inputText>
<rich:message id="m_name" for="name" ajaxRendered="false" />
Поэтому, когда происходит событие blur
, появляется значок, указывающий, является ли выбор правильным или нет (код выше делает то, что я говорю)
Но я хочу применить этот вид проверки в этом же настраиваемом преобразователе, просто чтобы сохранить стандартную проверку через мой проект для всех видов входных данных или всех видов.
Я уже пытаюсь использовать @ManagaProperty
в RequestScope
, но безуспешно:
@ManagedProperty("#{param.measure}")
private String measure;
Поэтому, когда происходят события размытия, он вызывает мой validate
bean-компонент, который имеет requestScope, как сказал BalusC здесь , но это пустая строка.
Есть идеи?