使用 h :messages: How to get I18N message and label? 进行 JSF 复杂验证格式化

标签 jsf

当组件验证失败时,我尝试执行以下操作:

  • 将未通过验证的输入的边框更改为绿色
  • 将验证失败的输入边框更改为红色
  • 在页面顶部呈现一个包含国际化标签/消息对的列表
  • 仅显示错误消息

到目前为止我所拥有的:

我使用 Bean 验证:

@Size(min = 5, max = 20)

我使用 JS/JQuery 管理着色,方法如下:

  • 我渲染一个带有验证状态的隐藏字段:

styleClass="hidden #{facesContext.validationFailed?'failed-validation':'success-validation'}"

  • 在要验证的组件上,我设置了单独的验证状态:

#{component.valid?'input-valid-tobe':'input-error'}"

  • 在我的 Ajax 操作中,我注册了 onevent="xxx"用正确的有效 CSS 替换 CSS 的函数,即我只想在验证失败时突出显示已验证的内容:
function xxx(data){
  if(data.status == "success"){
      if ($('.failed-validation')[0]){
          $('.input-valid-tobe').addClass('input-valid');
      }
  }
}

现在解决问题,渲染消息: 我想渲染一个显示组件标签和消息的列表。

消息:

我想我可以使用 bean 验证 I18N,如此处所述的消息:

How does it work with bean validation messages and i18n in JSF2? http://jcp.org/aboutJava/communityprocess/edr/jsr303/index.html

..但是,我希望 JSF 2.2 中可能有一些新内容!有吗?

标签:

不应该<h:messages/>渲染输入字段的标签? (由于某种原因没有)

过滤: 有没有办法通过 severity 过滤消息?

(除了创建一个使用 CSS 来隐藏我不想显示的消息的自定义 bean)

最佳答案

您可以通过 ValidationMessages_xx_XX.properties 自定义和本地化它们文件。

例如

  • ValidationMessages.properties - 默认语言环境(通常是美式英语,en_US)
  • ValidationMessages_es.properties - 西类牙语
  • ValidationMessages_en_GB.properties - 英式英语

如果在特定于区域设置的 bundle 中找不到条目,​​则会回退到默认 bundle 。


至于标签,默认情况下确实不添加。您可以通过属性文件中由 <message-bundle> 标识的以下条目轻松地告诉 JSF 使用 JSF 标签为 Bean 验证消息添加前缀。的faces-config.xml :

javax.faces.validator.BeanValidator.MESSAGE = {1}: {0}

{0}是 bean 验证器的消息,{1}是 JSF 组件的标签。最终结果如下:

Label of component: bean validation message

如果您想要对标签的定位进行更细粒度的控制,您需要创建一个自定义 bean 验证消息插值器。 JSF utility library OmniFacessuch one .


对于过滤,<h:messages> 没有内置的方法。 。您需要自己迭代这些消息。

例如

<ui:repeat value="#{facesContext.messageList}" var="message">
    <h:panelGroup rendered="#{message.severity.ordinal eq 2}">
        ERROR! #{message.summary}
    </h:panelGroup>
</ui:repeat>

关于使用 h :messages: How to get I18N message and label? 进行 JSF 复杂验证格式化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20152702/

相关文章:

java - 页面刷新时重新创建数据

javascript - 使用 JSF 中 javascript 传递的变量触发 commandButton 操作

pdf - PrimeFaces p :media not working with StreamedContent in a @ViewScoped bean

JSF 2.0 自定义异常处理程序在 handleNavigation 上抛出 IllegalStateException

mysql - 将图像保存到数据库是个好主意吗?

jsf - EJB 依赖 FacesContext 是一个糟糕的设计吗?

java - JSF p :dataTable (first entry wrong in p:columns) 的奇怪行为

jsf - 如何呈现 <h :outputLink>? 的自定义属性

java servlet cos多部分: save inpustream for later storage

java - 使用 "JSF"或 JSTL 标签迭代 java.util.Map 时出现问题