2017-10-09 7 views
1

여러 검증을 형성primefaces 내가 시간에 두 개 이상의 구성 요소를 확인하는 문제가

여기
<p:inputText id="actionNameInput" 
       title="TO DO" 
       value="#{repositoryBean.newActionName}" 
       label="Action name" 
       required="true" 
       requiredMessage="Action name is missing."> 
     <f:validator validatorId="inputTextValidator"/> 
     <f:attribute name="input1" value="Action name" /> 
    </p:inputText> 

    <p:inputText id="identifierInput" 
       title="TO DO" 
       value="#{repositoryBean.newActionRegex}" 
       label="Identifier" 
       required="true" 
       requiredMessage="Identifier is missing."> 
     <f:validator validatorId="inputTextValidator"/> 
     <f:attribute name="input1" value="Identifier" /> 
    </p:inputText> 

는 검증 클래스입니다 :

@FacesValidator(value = "inputTextValidator") 

public class AddActionValidatorInputText implements Validator{ 
    @Override 
    public void validate(FacesContext facesContext, UIComponent uiComponent, Object o) throws ValidatorException { 

     if(((String)o).length() < 3){ 
      FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, 
        uiComponent.getAttributes().get("input1")+" should be longer than 3characters.", null); 
      FacesContext.getCurrentInstance().addMessage(null, message); 
      throw new ValidatorException(message); 
     } 
    } 
} 

단지 첫번째 InputText]를 유효성을 검사합니다 ... 나는 this을 tryied했지만, 나는 (항상 null) 구성 요소의 값을 얻을 질수 ... 나는 심-얼굴에 대해 smthing하지만 읽기 내가 그것을 적용하는 경우, 더 큰 오류가있었습니다 (점점 더 많은 의존성이 필요합니다 ...). 나는 빈 클래스에서 그것을 유효화하고 싶지 않다.

+0

'h : inputText'와 함께 작동합니까? – Kukeltje

답변

0

Here이 문제의 가능한 해결책을 찾을 수 있습니다.

<p:inputText id="actionNameInput" 
      title="TO DO" 
      value="#{repositoryBean.newActionName}" 
      label="Action name" 
      required="true" 
      requiredMessage="Action name is missing." 
      valueChangeListener="#{repositoryBean.onNewActionNameChange}"> 
    <f:validator validatorId="inputTextValidator"/> 
    <f:attribute name="input1" value="Action name" /> 
</p:inputText> 

및 백업 콩에서 : : 그리고 null이 아닌 값을 만들기 위해, valueChangeListener이 같은 속성을 사용

public void onNewActionNameChange(ValueChangeEvent event) { 
    setNewActionName(event.getNewValue().toString()); 
} 

This article을 JSF 라이프 사이클에 대해 내부에서 무슨 일이 일어나고 있는지 이해하는 데 도움이 될 수 있습니다.