我有一个监听JSF验证失败的监听器,我需要能够根据特定的上下文关闭一个特定的功能。
在我的监听器中我只有SystemEvent,所以这个监听器不是特定于组件的,我想知道是否有任何方法可以传递任何其他信息,也许类似于FacesContext上的属性?...以便稍后在验证监听器中,我可以检查我可以在JSF中设置的属性的上下文。
即
<f:someContextParam name="turnOff" value="true"/>
然后再
boolean turnOff = (Boolean) FacesContext.getCurrentInstance().someWayToGetAttribute("turnOff");
...在黑暗中看起来像是一个镜头,我只是试图看看在重写架构之前是否有任何上下文传递信息的方式。
答案 0 :(得分:0)
您可以在输入组件中包含<f:attribute>
标记,然后通过FacesContext.getCurrentInstance().getAttributes().get(attrname);
标记的语法应为<f:attribute name="attrname" value="#{ELexpr}">
这是一个半完整的示例验证器:
public class NameValidator implements Validator { @Override public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException { Object value = (String)component.getAttributes().get("FIELD_NAME"); // validate stuff } }
和相应的jsf
<h:inputText id="name" value="#{registrationManager.name}"> <f:validator validatorId="nameValidator" /> <f:attribute name="FIELD_NAME" value="#{registrationManager.numAttempts}"/> </h:inputText>
<强>更新强> 修复了错误使用上下文以获取属性以从组件中获取它的信息。