Вы всегда можете использовать Component.getInstance()
Шва из вашего Валидатора, чтобы получить Массив из вашего контекста. Это предполагает, что вы заполнили Бин на основе шва, содержащий этот массив.
Например:
@Name("someValidator")
@Validator
public class SomeValidator implements javax.faces.validator.Validator {
public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
MyArrayBean bean = (MyArrayBean)Component.getInstance("myArrayBean");
String[] arrayA = bean.getArray();
for(String a : arrayA) {
//etc
}
}
}
Поочередно , если массив может меняться в зависимости от страницы, с которой вы проверяете; тогда вы всегда можете передать значение в валидатор, используя <f:attribute>
.
Например:
<h:inputText value="#{someBean.stringB}">
<f:validator validatorId="someValidator" />
<f:attribute name="arrayA" value="#{myArrayBean.array}"/>
</h:inputText>
А в вашем валидаторе вместо Component.getInstance()
вы можете загрузить этот массив через атрибут:
String[] arrayA = component.getValueExpression("arrayA").getValue(context.getELContext());
[Обратите внимание: если передача String[]
не работает, передайте вместо нее Бин, содержащий его.]