当前位置: 首页 > 知识库问答 >
问题:

如何更改默认验证器装饰控制器sfx

段干弘扬
2023-03-14

我在我的项目中使用controlsfx,并且我试图找到适当的方法来更改默认的验证器装饰,因此它使用CSS装饰作为默认的图形,但我没有访问权限。

我可以制作自己的decorator,并装饰一些文本字段,(我定义css类,创建decorator,它就可以工作了)

但是我怎么能改变我的代码,它默认使用CSS装饰进行验证!示例代码:

    ValidationSupport support = new ValidationSupport();
    public void isMax(TextField tf, Boolean b){
            Validator<String> validator = (control, value) -> {
            boolean condition =
                    value != null
                            ? !value
                            .matches(
                                    "[\\x00-\\x20]*[+-]?(((((\\p{Digit}+)(\\.)?((\\p{Digit}+)?)([eE][+-]?(\\p{Digit}+))?)|(\\.((\\p{Digit}+))([eE][+-]?(\\p{Digit}+))?)|(((0[xX](\\p{XDigit}+)(\\.)?)|(0[xX](\\p{XDigit}+)?(\\.)(\\p{XDigit}+)))[pP][+-]?(\\p{Digit}+)))[fFdD]?))[\\x00-\\x20]*" )
                            : value == null;

            return ValidationResult.fromMessageIf(control,"not a number" ,Severity.ERROR , condition);
        };


        support.registerValidator( tf, b, validator );

    }

所以,要更改什么,以便我的验证使用CSS样式,而不是图形样式。

上述代码起作用,并提供文本字段的图形验证,但以下代码不起作用:

public class MyValid extends StyleClassValidationDecoration {


ValidationSupport support = new ValidationSupport();


    public void isMax(TextField tf, Boolean b){
      //  Decorator.addDecoration(tf,new StyleClassDecoration("warning"));
      support.setValidationDecorator(new StyleClassValidationDecoration());
            Validator<String> validator = (control, value) -> {
            boolean condition =
                    value != null
                            ? !value
                            .matches(
                                    "[\\x00-\\x20]*[+-]?(((((\\p{Digit}+)(\\.)?((\\p{Digit}+)?)([eE][+-]?(\\p{Digit}+))?)|(\\.((\\p{Digit}+))([eE][+-]?(\\p{Digit}+))?)|(((0[xX](\\p{XDigit}+)(\\.)?)|(0[xX](\\p{XDigit}+)?(\\.)(\\p{XDigit}+)))[pP][+-]?(\\p{Digit}+)))[fFdD]?))[\\x00-\\x20]*" )
                            : value == null;

            return ValidationResult.fromMessageIf(control,"not a number" ,Severity.ERROR , condition);
        };


        support.registerValidator( tf, b, validator );

    }

问题是我认为要么我不知道如何将stylevalidation指向共同响应的css类,要么问题就在返回ValidationResult的行中。

例如这行代码:

Decorator.addDecoration(tf,new StyleClassDecoration("warning"));

装饰字段,并作为样式资源在我的默认. css文件中使用“警告”类。如何为StyleClassValidationDecoration执行此操作?

共有1个答案

籍昱
2023-03-14

返工以展示如何使用StyleClassValidtionDecoration。

在ControlsFX中,如果使用CSS,您可以简单地为希望使用的CSS类提供StyleClassValidation装饰。

    ValidationSupport validator = new ValidationSupport();
    validator.setValidationDecorator(new StyleClassValidationDecoration("myErrorClass", "myWarningClass"));
    validator.registerValidator(fieldToValidate, false, this::myValidationForField);
 类似资料:
  • 当启动一个流浪者盒子时,“默认”这个名字来自哪里? 有没有办法设定这个?

  • 问题内容: 当我运行docker时,下载的docker映像(似乎是)存储在某个地方。 由于该目录上的磁盘空间有限,因此我要同时将docker设置到多台机器上;有没有办法将此默认位置更改为ie ? 问题答案: 您可以使用option和您选择的目录来启动Docker守护程序。这将为Docker设置适当的运行时。 对于1.8版,应该是这样的: 对于早期版本,它将是: 从手册页:

  • 我有一个像下面这样的模型对象,带有自定义约束验证器。自定义验证器检查是否填充了fileName或小时。 有一种方法将此作为输入,它验证所有以下条件 > 条件不为空(通过默认验证器) criteria.id不为空(通过默认验证器) criteria.name不为空(通过默认验证器) 标准文件名或小时不为空(通过自定义验证器) 空评估(@NotNull@有效标准标准){} 现在,当我为这个模型类编写单

  • 默认情况下,Spring Boot使用从客户端默认接受值为“/login”的。 如果我想创建一个自定义身份验证系统,包括以下选项: 登录endpoint,如:/api/v1/auth/ign,将接受电子邮件和密码 而不是像YT中的许多视频所示那样创建CustomAuthFilter,而是在auth控制器中创建一个处理发送回jwt令牌的方法。 现在我已经知道,要更改默认登录路由,我需要: 但是下一部

  • 我已经用hybris配置了data hub。但我必须在datahub local中更改默认密码。从nimda到Hybris123的房产。我用openssl加密了pwd。在发布idoc时,我得到了以下错误。 Tomcat日志: 2017-09-20 16:30:44639[DEBUG][c.h.d.c.c.i.DefaultExportClient]发布到目标系统的响应状态:HybrisCore,2

  • 我想验证请求参数。我已经浏览了很多博客并回答了问题,我也做了同样的事情。在控制器类上添加了@Validated。 控制器中的方法: 控制器建议 配置: 完成所有这些之后,现在我得到一个404错误。"状态":404,"错误":"未找到","消息":"没有可用的消息"