How to use XPages Java code to set valid method of input control inside a custom control?

前端 未结 2 1887
遇见更好的自我
遇见更好的自我 2021-01-13 20:50

Ok, this is a weird one.

In XPages my dataSource is a Java Object. A Managed bean or PageController. I\'m using bootstrap via the Ext. Library.

What I\'d

2条回答
  •  悲&欢浪女
    2021-01-13 21:47

    What I do is using a custom validator for the component. For instance,

    
        
    
    

    In my controller class:

    public void validateDuration(UIComponent source) {
        // Do my checks...
        // If fails,
        BeanUtils.setControlInvalid(source, "Format Error at date time!");
    }
    

    BeanUtils methods to invalidate a specific component and generate a validation error message:

    public static void setControlInvalid(UIComponent editableComponent, String message) {
        if(StringUtil.isEmpty(message) || editableComponent==null) return;
    
        if(editableComponent instanceof EditableValueHolder) {
            ((EditableValueHolder) editableComponent).setValid(false);
            postFacesMessage(editableComponent, FacesMessage.SEVERITY_ERROR, message);
        }
    
    }
    
    public static void postFacesMessage(UIComponent component, Severity severity, String msg) {
        if(StringUtil.isEmpty(msg) || component==null) return;
    
        FacesContext fc=FacesContext.getCurrentInstance();
    
        FacesMessage message=new FacesMessage(severity, msg, msg);
        fc.addMessage(component.getClientId(fc), message);
    }
    

提交回复
热议问题