2016-11-11 57 views
0

我需要根據點擊按鈕進行一些驗證,但是我無法在bean的驗證方法中找到獲取該按鈕的方法。如果我能得到按鈕,也許可以與裏面的定義屬性進行比較。所以這是我所得到的:如何在bean驗證方法中獲得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

你的意思是你想知道按鈕被點擊了嗎?行動不會告訴你這一點。而Action只能用於導航。您應該使用ActionListener事件,並且返回給該方法的ActionListener Event對象將具有發起該事件的組件對象。我會爲每個可點擊按鈕的ActionListener事件以及被調用的方法簡單地設置被點擊按鈕的組件ID。

+0

謝謝,我要檢查一下。我想要做的是對頁面中的所有驗證使用組件驗證程序,唯一的方法是在方法中知道觸發該操作的按鈕,因爲某些組件根據點擊的人而具有不同的驗證。 – abdiel