Передать параметр в валидатор - PullRequest
0 голосов
/ 04 октября 2018

на моей странице jsf я использую составной компонент, который в основном является полем ввода.Мой компонент поддержки содержит список, содержащий все разрешенные языки, на которые пользователю разрешено входить.При отправке я хочу проверить вводимые пользователем данные на основе этого списка.

Поэтому мне нужно передать этот список валидатору, потому что получение этого списка занимает много времени, поэтому я делаю это, когда инициализируется компонент поддержки.Но я борюсь здесь.

Мой составной компонент выглядит так:

<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:composite="http://java.sun.com/jsf/composite">
  <composite:interface>
    <composite:attribute name="value" required="true" />
    <composite:editableValueHolder name="nameValidator" targets="value" />
  </composite:interface>

  <composite:implementation>
    <h:panelGroup>
        <h:inputText id="value" value="#{cc.attrs.value}" />
    </h:panelGroup>
  </composite:implementation>
</html>

Мой валидатор выглядит так:

@FacesValidator("OcrLanguageValidator")
public class OcrLanguageValidator implements Validator {

@Override
public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
    Object param1 = context.getExternalContext().getRequestParameterMap().get("param1");
    if (param1 != null) {

    }
}

}

ИЯ использую такой компонент на моей странице jsf:

<h:form id="newParameter" styleClass="form-horizontal">
  <uiComps:testCC value="test" >
    <f:validator validatorId="OcrLanguageValidator" for="nameValidator" />
    <f:param name="param1" value="blub" />
  </uiComps:testCC>
</h:form>

Когда вызывается метод проверки, param1 всегда равен нулю.Как я могу достичь своей цели?Я использую Mojarra 2.3.

Edit из-за возможного дублирования: я не думаю, что это дублирование.Я использую составной компонент здесь.Без этого есть способ сделать это.Но мне не нравится идея добавления специального атрибута к компоненту только потому, что он нужен мне в одном случае, а не в других.Надеюсь, что может быть лучшее решение этой проблемы.

...