<h:messages>在JSF中做了什么?

bib*_*bek 6 jsf message

我正在学习JSF并遇到过这样的问题:

<h:messages layout="table"></h:messages>
Run Code Online (Sandbox Code Playgroud)

在示例应用程序中?

我不确定这条线是做什么的?从代码中删除行时我没有错误,并且能够运行它并获得相同的输出?

sve*_*ven 17

所述h:messages标签生成对于未被覆盖的当前JSF视图的所有消息h:message(注缺少"s"在结束)标记.消息可以由您的支持bean(FacesContext.addMessage)显式生成,也可以由JSF隐式生成.

例如,如果您已根据需要标记了输入值,并且用户在未填写所需值的情况下提交表单,则会向视图添加错误消息.如果h:message标记绑定到相关组件,则消息将在那里呈现,否则它将由h:messages视图中的全局标记呈现(如果有).

layout属性指定要生成的HTML代码应该是什么样的.的table布局(在实施例中使用)使用HTML表格显示消息,而list布局使用项目列表(HTML ul标签).

如果您h:messages在视图中指定标记而且没有h:message标记,则不会通知用户有关错误的信息.因此,最佳做法是h:message为视图的每个输入组件h:messages添加标记,并为整个视图添加标记,以确保用户可以看到所有消息.

您将在JSF Toolbox中找到一个紧凑的JSF标记引用.

  • 关于"呈现当前JSF视图中未涵盖的所有消息".我不认为这是完全正确的.除非您指定globalOnly ="true",否则它将显示所有消息. (4认同)

Rom*_*las 5

组件<h:message><h:messages>专用于显示消息给用户(一般错误消息).

例如,当您对失败的字段进行验证时(例如,用户未填写必填字段,或在仅限数字字段中输入字符串),则会将a FacesMessage添加到FacesContext对象中.该<h:message><h:messages>然后用于显示在页面的消息.

该组件<h:messages>将显示包含在其中的所有消息FacesContext,而该组件<h:message>专用于特定的clientId(特定字段).例如,当您想要将消息放在靠近字段的位置时,后者很有用.

请注意,您可以添加将向用户显示的任何类型的消息:

FacesContext.getInstance().addMessage(null, new FacesMessage("The message to display"));
Run Code Online (Sandbox Code Playgroud)

在此示例中,第一个参数是此消息所关注的字段的ID字段(当消息是特定字段的验证消息时很有用).null表示该消息是一般信息(即未链接到任何特定字段).

您可以在此处查看此组件的示例.请注意,此示例使用的rich:messages是"基本"的扩展(由RichFaces提供)<h:message/>,但原理是相同的.