验证消息显示在JSF-javax faces developmentstage消息页面的底部

验证消息显示在JSF-javax faces developmentstage消息页面的底部,jsf,Jsf,我一直在用JSF显示错误消息。我的要求如下: 我有一个用户表单,用户必须在其中输入诸如名字、姓氏、用户名和电子邮件地址等详细信息。所有这些字段都是必填字段,其中用户名和电子邮件地址是唯一的。因此,当用户输入所有字段时,如果他单击“保存”,那么在后端,我必须检查数据库中是否已经存在用户名和电子邮件地址,如果存在,我必须在页面顶部显示错误消息,说“输入的数据已经存在,请重新输入” firstname和lastname的验证消息应显示在每个字段的侧面。我不能使用,因为它一次显示所有验证消息 因此,我使

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

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

firstname和lastname的验证消息应显示在每个字段的侧面。我不能使用
,因为它一次显示所有验证消息

因此,我使用以下代码将消息填充到表单中的隐藏字段中:

context.addMessage("addUserErrorMessage", new FacesMessage("the data entered is already exists, please reenter again"));
addUserErrorMessage
是隐藏表单字段的id

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

<h:message for="addUserFormMessage">

消息将显示在页面底部 当我通过firebug检查时,我发现下面的标签正在填充

<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>
    输入的数据已经存在,请重新输入
当我在页面顶部写下
标记时,我无法找出消息为什么显示在底部

有人能帮我吗

提前谢谢

因此,我使用以下代码将消息填充到表单中的隐藏字段中:

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));
这样,消息将设置为全局消息,您可以使用
globalOnly
属性仅显示全局消息

<h:messages globalOnly="true" />

您以前的
实验是否可能没有从JSF文件中完全删除?