我今天正在寻找一些关于我遇到的问题的指导。
我想要完成的是动态构建一个带有验证和所有内容的页面。最终结果是允许用户通过管理功能配置页面上的字段。下面是我用作测试页面的代码副本,我在其中循环“配置”字段并使用定义的条件写出字段。
<ui:repeat var="field" value="#{eventMgmt.eventFields}" varStatus="status">
<div class="formLabel">
<h:outputLabel value="#{field.customName}:"></h:outputLabel>
</div>
<div class="formInput">
<h:inputText id="inputField" style="width:# {field.fieldSize gt 0 ? field.fieldSize : 140}px;">
<f:validateRegex disabled="#{empty field.validationPattern}" pattern="#{field.validationPattern}"></f:validateRegex>
</h:inputText>
<h:message for="inputField" showDetail="true" errorClass="errorText"></h:message>
</div>
</ui:repeat>
在页面呈现并尝试提交该字段的任何值后,我收到以下消息“Regex 模式必须设置为非空值”。这显然意味着没有填充表达式。让我感兴趣的是,在评估 EL 时,没有表达式的字段将被禁用。我也可以将相同的代码#{field.validationPattern} 放入页面中,然后将正确的值写入页面。
所以,我的问题是: 1. 这可能吗?2. JSF 容器在什么时候考虑为验证正则表达式绑定模式?3.我做错了什么或正确的方法是什么?
我正在运行 Tomcat 7.0.22、Mojarra 2.1.5 和 Eclipse 作为我的 IDE。