【发布时间】:2014-05-28 23:53:23
【问题描述】:
正如标题所暗示的,我正在尝试将视图范围的 bean 注入到由@FacesValidator 修饰的验证器中,如下所示。
@FacesValidator(value = "priceRangeValidator")
public final class PriceRangeValidator implements Validator {
@ManagedProperty(value="#{rangeSliderBean}")
private RangeSliderBean rangeSliderBean; //Setter only.
@Override
public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
// The bean instance is unavailable here. It is null.
}
}
目标视图范围 bean - RangeSliderBean 在 validate() 方法中不可用。
我暂时按照以下方式在validate()方法本身中获取该bean的实例。
RangeSliderBean rangeSliderBean = context.getApplication().evaluateExpressionGet(context, "#{rangeSliderBean}", RangeSliderBean.class);
是否可以使用@ManagedProperty 注释或其他方式将视图范围的 JSF 托管 bean 注入验证器?
我使用的是 JSF 2.2.6。
更新:
这不适用于Mojarra 2.3.0-m01。 bean 实例仍然像以前一样保持null。这一次在这篇文章之后很久,我拿了一个对应的视图范围 CDI bean(@ManagedProperty 被 @Inject 替换)。
【问题讨论】:
标签: jsf validation jsf-2.2