繁体   English   中英

如何在 JSF 2.0 的一页中使用多个 forms?

[英]How to use multiple forms in one page with JSF 2.0?

我尝试在一页中使用多个 forms 和 JSF 2.0。 我使用 PrimeFaces 3.0M1 并尝试构建一个带有选项卡和每个选项卡一个表单的应用程序。

我有一个如下页面:

<html xmlns="http://www.w3.org/1999/xhtml"

xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html"                 
xmlns:ui="http://java.sun.com/jsf/facelets" 
xmlns:fn="http://java.sun.com/jsp/jstl/functions" 
xmlns:p="http://primefaces.prime.com.tr/ui">

<div>
<p:tabView>
<p:tab title="Form1">
<h:form id="form1">
    <p:inputText id="txtInput" value="#{bean1.inputText}" />
    <p:commandButton title="Submit" value="Submit" actionListener="#{controller1.submitValues}">
</h:form>
</p:tab>
<p:tab title="Form2">
<h:form id="form2">
    <p:inputText id="txtInput2" value="#{bean2.inputText}" />
    <p:commandButton title="Submit" value="Submit" actionListener="#{controller2.submitValues}">
</h:form>
</p:tab>
</p:tabView>
</div>  
</html>

如果我单击选项卡 1 中的提交按钮,一切都会像预期的那样工作。 但是,如果我单击第二个选项卡上的按钮,该命令将不会在 controller2 中执行。

这里有什么问题? 如果我将 button2 的执行命令绑定到 button1,则 controller2 中的命令将正确执行,因此我可以排除 backing beans 中存在问题。

我该如何解决这个问题?

Primefaces 向导和 tabview 组件必须包含在单个表单中。

没有理由在这样的选项卡视图或向导中不能有多个提交按钮。 您对此感到困惑可能是因为您担心未出现在当前查看选项卡中的托管 bean 的其他属性。

我认为您可以 go 指定按钮的“进程”属性

尝试这个。 更改您的<h:form>标记并将其替换为<h:panelGrid>并将其 ID 指定为form1form2并像这样更改您的 2 个按钮

<p:commandButton title="Submit" value="Submit" actionListener="#controller1.submitValues}" process="@this,form1">

<p:commandButton title="Submit" value="Submit" actionListener="#controller2.submitValues}" process="@this,form2">

这会奏效。 :) 用你的结果更新我

您可以创建一个项目列表,并用您希望在支持 bean 中浏览的值填充它。 <h:form>标签放在<ui:repeat>标签中,如下所示:

<ui:repeat var="item" value="#{backingBean.items}">
   <h:form>
    Put here the content of your form
   </h:form>
</ui:repeat>
<p:commandButton value="Submit" action="desired action"/>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM