f:validateRegex对于不需要的inputText是可能的吗?

时间:2018-08-13 23:46:58

标签: java validation jsf constraints bootsfaces

我有以下代码:

<b:inputText id="txtBuscarPorCodigo" 
      placeholder="123456-78-90123" 
      col-sm="6" 
      required="true" 
      requiredMessage="Es necesario este dato de la manera en la que se indica"
      rendered="#{miControlador.buscarPor == 'codigo'}"
      value="#{miControlador.miBean.codigo}" 
      label="Código:" >
          <f:validateRegex id="validateRegex" 
                pattern="^([0-9]{4}-[0-9]{2}-[0-9]{5})$" />
</b:inputText>

而且,它可以工作...但是。如果我删除下几行:

required="true" 
requiredMessage="Es necesario este dato de la manera en la que se indica"

该验证现在不起作用。

您知道不需要的地方的一些代码吗?

我的意思是,我想让用户在该地方什么也没有写,也没有我确切的要求。

感谢您的阅读,对我的拼字法感到抱歉,但我不会说英语。

1 个答案:

答案 0 :(得分:2)

我试图重现您的错误。据我所知,验证的工作方式与实现<b:inputText />时的设计完全相同。

为了避免造成误解,我已将复制器上传到GitHub。这是我们的BootsFaces展示柜的一部分。如果您熟悉Maven,则应在几分钟内启动并运行它。这是包含复制者的提交:https://github.com/TheCoder4eu/BootsFacesWeb/commit/4633fce03e8984005ae6c0698ade97e5da8d65e8

enter image description here

所以我认为没有错误。但是也许有一个简单的误解。不管是否有输入,始终会检查<f:validateRegex />。如果我对您的理解正确,则仅在输入不为空的情况下才想检查正则表达式。

在这种情况下,我的方法是将空字符串包含在正则表达式中,如下所示:

<f:validateRegex pattern="^([0-9]{4}-[0-9]{2}-[0-9]{5})?$" />

(请注意问号!)