从命令按钮调用另一个表单

时间:2012-08-01 19:33:01

标签: jsf jsf-2 primefaces

当我提交表单时,它应该调用另一个表单,以便我可以呈现它。我使用primefaces,我希望它能像下面这样工作。但这是一个错误。

的XHTML

<h:form id="from1">
<h:inputText=......
<h:outputText=....
<p:commandButton id="submit" actionlistener="#{bean.method}" value="submit" process="form2"/>

<h:form id="form2">
<h:outoutText value="it is working" render="#{bean.boolean}" />
</h:form>

错误

[Faces Servlet]] (http--127.0.0.1-8080-2) Servlet.service() for servlet Faces Servlet threw exception: javax.faces.FacesException: Cannot find component with identifier "form2" referenced from "form1_submit".

更新

<h:form id="from1">
    <h:inputText=......
    <h:outputText=....
    <p:commandButton id="submit" actionlistener="#{bean.method}" value="submit" update=":form1"/>
</h:form>

2 个答案:

答案 0 :(得分:15)

有两个错误:

  • 相对组件客户端ID与最近的父UINamingContainer组件相关(在您的情况下是<h:form id="form1">)。客户端ID“form2”不存在于“form1”的上下文中的任何位置。您需要使用绝对客户端ID,前缀为命名容器分隔符,默认为:。这将从视图根目录中搜索组件。

    process=":form2"
    
  • 您无法通过提交一个表单来处理另一个表单。您需要处理的所有字段都没有提交(请注意,这不是JSF限制,而是HTML限制)。只需将您需要处理的字段包含在您需要提交的相同表格中。

答案 1 :(得分:5)

p:remoteCommand和JS的另一个解决方案是onclick描述 HERE