【问题标题】:How to validate inputTextarea with read only?如何以只读方式验证 inputTextarea?
【发布时间】:2017-07-27 17:45:33
【问题描述】:

我需要在 PF 对话框内运行的 primefaces (PF) 向导中验证只读 inputTextarea 组件。从这里阅读了许多线程后,我决定使用 inputHidden 组件来处理它。但是它确实进行了验证,但是在 inputText 中输入一个值然后单击 commandButton 我注意到 foo bean 的 applyName 方法从未被调用。我想相信它与 JSF 生命周期有关。

我的目标是启动 foo.applyName 方法,以便 foo.name 返回一个正确的值并进行评估,以便我可以单击向导中的下一步按钮。

在没有验证机制的情况下,foo.applyName 确实将一个值(字符串类型)放入 name 属性中,我可以继续下一步。

<p:panelGrid id="table">
  <p:inputTextarea readonly="true" value="#{foo.name}" />
  <h:inputHidden id="name" required="#{empty foo.name}" requiredMessage="missing name" />
  <p:message for="name" />
</p:panelGrid>

<h:inputText value="#{foo.someVar}" />
<p:commandButton value="Apply Missing Name" update="table" action="#{foo.applyName}" />

【问题讨论】:

    标签: jsf primefaces


    【解决方案1】:

    问题源于当您单击commandButton 时,您同时提交了inputTextArea 和inputText。 JSF 看到您提交的空字段是必需的,并且不允许请求继续。

    有几种方法可以解决这个问题

    1. 给 inputText 一个 id 并使用 commandButton 上的 'process' 属性来指定您要提交的字段,例如process="@this someVar"
    2. 将 inputTextArea 和 inputText 字段放在不同的表单中,这样 applyName commandButton 就不会同时处理这两个字段。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-15
      • 2010-09-10
      • 2018-06-04
      • 2020-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多