【问题标题】:Validation messages are displaying at the bottom of the page JSF - javax faces developmentstage messages验证消息显示在页面底部 JSF - javax 面对 developmentstage 消息
【发布时间】:2011-07-20 20:22:07
【问题描述】:

我一直在 JSF 中显示错误消息。我的要求如下:

我有一个用户表单,用户必须在其中输入名字、姓氏、用户名和电子邮件地址等详细信息。所有这些字段都是必填的,在这些字段中,用户名和电子邮件地址是唯一的。因此,当用户输入所有字段时,如果他点击保存,那么在后端我必须检查数据库中是否已经存在用户名和电子邮件地址,如果存在,我必须在页面顶部显示错误消息“输入的数据已经存在,请重新输入”。

名字和姓氏的验证消息应显示在每个字段的一侧。我不能使用<h:messages>,因为它会同时显示所有验证消息。

所以我使用以下代码在表单中填充了一个隐藏字段:

context.addMessage("addUserErrorMessage", new FacesMessage("the data entered is already exists, please reenter again"));

addUserErrorMessage是隐藏表单域的id。

但是当我在页面顶部显示消息时

<h:message for="addUserFormMessage">

消息显示在页面底部 当我通过萤火虫检查时,我发现以下标签正在填充​​p>

<ul id="javax_faces_developmentstage_messages" title="Project Stage[Development: Unhandled Messages">
    <li style="color:red;">the data entered is already exists, plese reenter again </li>
</ul>

我不知道为什么消息显示在底部,因为我在页面顶部写了&lt;h:message&gt;标签。

谁能帮我解决这个问题?

提前致谢

【问题讨论】:

  • 是否有可能您之前对&lt;h:messages&gt; 的实验尚未从 JSF 文件中完全删除?

标签: jsf


【解决方案1】:

所以我使用以下代码在表单中填充了一个隐藏字段:

context.addMessage("addUserErrorMessage", new FacesMessage("the data entered is already exists, please reenter again"));

addUserErrorMessage 是隐藏表单域的 id。

addMessage() 需要客户端 ID 作为第一个参数,而不是组件 ID。客户端 ID 应类似于 formId:addUserErrorMessage。客户端 ID 基本上是 HTML DOM 元素 ID。在浏览器中打开页面,右键单击它,查看源代码,找到隐藏的输入并确定其id 属性。


作为一种完全不同(且更常用)的替代方案,不要滥用隐藏输入,只需将 null 设置为客户端 ID:

context.addMessage(null, new FacesMessage(message));

这样消息将被设置为全局消息,您可以使用&lt;h:messages&gt;globalOnly属性仅显示全局消息。

<h:messages globalOnly="true" />

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-11
    • 2014-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多