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