2016-11-11 2 views
0

클릭 한 버튼에 따라 일부 유효성 검사를 수행해야하지만, 해당 버튼을 유효성 검사 메소드에서 가져 오는 방법을 찾을 수 없습니다. 버튼을 얻을 수 있다면 내부의 정의 된 속성과 비교할 수 있습니다.빈 검증 메소드에서 laucher 버튼을 얻는 방법

<af:button id="btnSearch"> 
    <f:attribute name="action" value="search"/> 
</af:button> 

<af:inputText id="itSearch" validator="#{pageFlowScope.mbCustom.customValidation}"> 
</af:inputText> 

빈에서 : 그래서 내가 무엇을 얻을

public void customValidation(FacesContext facesContext, UIComponent uIComponent, Object object) { 
    UIComponent button = //button that trigger the validation 
    String validationError = ""; 
    if("search".equals(button.getAttributes().get("action")){ 
     validationError ="Validation Button1"; 
    }else if("other".equals(button.getAttributes().get("action")){ 
     validationError ="Validation Button2"; 
    } 
    throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, 
                validationError, 
                null)); 

} 

어떤 도움을 이해할 수있을 것이다.

답변

1

어떤 버튼을 클릭했는지 알고 싶습니까? 액션은 당신에게 이것을 말하지 않을 것입니다. 액션은 내비게이션에만 사용해야합니다. ActionListener 이벤트를 사용해야하며, 메소드에 리턴 된 ActionListener Event 오브젝트에는 이벤트를 시작한 컴포넌트 오브젝트가 있습니다. 클릭 할 수있는 각 단추에 대해 ActionListener 이벤트를 가지며 호출되는 단추에 대한 구성 요소 ID를 단순히 설정합니다.

+0

감사합니다. 나는 그것을 점검 할 것입니다. 내가하려는 것은 페이지의 모든 유효성 검사에 대해 구성 요소 유효성 검사기를 사용하는 것입니다.이 작업을 수행하는 유일한 방법은 클릭 한 사람에 따라 다른 유효성 검사가있는 일부 구성 요소가 있으므로 작업을 트리거하는 버튼을 메서드에서 인식하는 것입니다. – abdiel