2016-11-11 28 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