如何验证inputTextarea是否只读?

时间:2017-07-27 17:45:33

标签: jsf primefaces

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

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

如果没有验证机制,foo.applyName确实会将一个值(String类型)放入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}" />

1 个答案:

答案 0 :(得分:1)

问题源于这样一个事实:当您单击commandButton时,您将提交inputTextArea以及inputText。 JSF发现您提交的空字段是必需的,并且不允许请求继续。

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

  1. 为inputText指定id并使用commandButton上的'process'属性指定要提交的字段,例如process =“@ this someVar”
  2. 将inputTextArea和inputText字段放在不同的表单中,以便applyName commandButton不会同时处理它们。