2017-07-27 157 views
0

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

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

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

<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

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

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

  1. 给这个inputText的ID和使用命令按钮的“过程”属性来指定要提交例如田野process =“@ this someVar”
  2. 将inputTextArea和inputText字段放在单独的窗体中,以便applyName commandButton不会同时处理这两个字段。
+0

啊......这对我有意义。尽管我重新设计了不同的方法,但我一定会尝试一下您的建议。我相信它会起作用。让我验证一下,然后我会接受答案。感谢您的时间和建议! – DaeYoung