【问题标题】:performing validations on p:dialog in JSF form以 JSF 形式对 p:dialog 执行验证
【发布时间】:2013-10-02 13:11:29
【问题描述】:

我正在使用p:message 在p:dialog 中进行验证,它通过单击表单的按钮打开。所以我的主窗体有两个对话框,单击按钮会打开,这两个对话框中有一个h:form。

在主窗体中,我有两个字段用户名和密码,因此当用户输入空值并单击提交时,主窗体上会显示错误消息,并且对话框还会弹出错误消息,这不应该是行为.我希望主表单的验证仅显示在表单上,​​p:dialog 中的字段验证仅显示在 p:dialog 中。你能帮我解决这个问题吗?

如果需要更多信息,请告诉我。

【问题讨论】:

  • 要走的路是:从对话框中实现一个主窗体appart(即使您在同一页面中拥有所有内容)。每个对话框也有它的内部形式。这样您就可以正确划分发送的内容。为了验证,只需在对话框中为主表单和其他表单添加一个<p:messages> 标签。当然,忘记嵌套表单(每个输入元素必须只与父表单相关!)。

标签: javascript validation jsf primefaces


【解决方案1】:

其中一种可能性是为每个表单中的每个输入设置一个单独的<p:message> 组件。这样只会显示相关的消息。示例:

<h:form>
    <h:inputText id="value" ... />
    <p:message for="value>
    ...
</h:form>
<p:dialog>
    <h:form>
        <h:inputText id="value" ... />
        <p:message for="value>
        ...
    </h:form>
<p:dialog>

如果您还想显示全局消息,可以考虑使用“悬停”组件,例如 &lt;p:growl&gt; 和 globalOnly="true"。

【讨论】:

  • 所以我有这样的东西:
    ...
    现在,当我使用空用户名提交表单时,它应该在表单上显示一条消息,指示“需要用户名”。因此,当我单击提交时,它会转到 bean,bean 对其进行验证并将此消息发送到 jsf 并返回带有消息的 login.xhtml。问题是它显示在表单和 p:dialog 中。
  • 您还期望放置两个&lt;h/p:messages&gt; 组件吗?您基本上告诉 JSF 自己显示两次。再次阅读答案并尝试实施它所说的内容。如果您有任何困难,请回来。
  • 我试过了,它按预期对单个字段工作。但我还有另一种情况,当输入两个字段值并提交表单时,请求转到 bean 并验证是否用户名和密码存在,如果不存在,则应显示一条消息“无效的用户名和密码”。我如何实现这一点,因为我们为每个元素使用单独的 p:messages。另外要明确的是,我正在返回一条消息失败时将 bean 转到页面。感谢您的帮助。
  • 考虑答案中的最后一条语句。只是不要将您的消息附加到任何组件,它会以“悬停”的方式显示在 &lt;p:growl globalOnly="true" /&gt; 中。
  • 感谢您的回复。当您导航到下一页时,我有一个关于使用 p:growl 的问题。因此,当我转到一个 jsf 并在操作成功时执行一些操作时,我会将用户重定向到下一页。在这种情况下,消息没有收到显示。你知道我该怎么做吗?
猜你喜欢
  • 2011-07-10
  • 2010-10-28
  • 2019-07-01
  • 1970-01-01
  • 2023-01-28
  • 2011-08-28
  • 2012-10-03
  • 2020-05-04
  • 1970-01-01
相关资源
最近更新 更多