可以从验证器类设置xp:control的styleClass吗?

Pat*_*ten 0 jsf xpages

对于表格,我为编辑框设置了一个有效期,例如:

<xp:inputText
    id="inpRiskFactors" 
    styleClass="inputEscalation"
    value="#{matterBean.matter.escRiskFactors}" 
    validator="#{matterValidators.valEscRiskFactors}"...
Run Code Online (Sandbox Code Playgroud)

以下是我的验证方法的片段:

public void valEscRiskFactors(FacesContext facesContext, UIComponent component, Object value) {        
        utils.printToConsole(this.getClass().getSimpleName().toString() + " - valEscRiskFactors(...), value = " + value.toString());
        String msg = null;
        if (value.toString().replaceAll("\\s+","").equals("")){
            msg = matterProp.getProperty("msg_valid_esc_risk_factors");
            FacesMessage message = new FacesMessage(msg);
            throw new ValidatorException(message);
        }       
    }
Run Code Online (Sandbox Code Playgroud)

我想知道我是否可以从此方法更改/设置调用组件(UIComponent组件)的styleclass属性?

对于用户来说,最好在xp上应用一些CSS:所需的控件并且不通过验证.

任何人都有一个线索如何实现这一目标?

Per*_*ten 5

大多数(所有?)标准XPage控件使用WAI-ARIA标准进行验证,因此aria-invalid当控件无效时自动将属性设置为"true".

这意味着您可以使用CSS来设置输入控件的样式.例如,当控件无效时,您可以以不同方式设置背景颜色和边框的样式:

[aria-invalid=true] {
    background-color: #fee;
    border-color: red;
} 
Run Code Online (Sandbox Code Playgroud)