0

有 2 个表单,只需要 1 个提交按钮:

<h:form>
<h:panelGrid columns="2">
<h:outputText value="#{msgs.shortDescription}"/>
<p:inputText value="#{fileBean.shortDescription}" required="true"/>
<h:outputText value="#{msgs.longDescription}"/>
<p:inputTextarea value="#{fileBean.longDescription}" required="true"/>

<h:selectOneMenu value="#{enumRegistration.selectedRegion}">
<f:selectItems value="#{enumRegistration.regionList}"/>
<f:ajax listener="#{enumRegistration.selectCity}" render="citiesmenu"/>
</h:selectOneMenu>

<h:commandButton value="Submit" action="#{fileBean.updateAd}"/>
</h:panelGrid>
</h:form>

<h:form enctype="multipart/form-data">
<p:fileUpload value="#{fileBean.file}" mode="advanced"
fileUploadListener="#{fileBean.handleFileUpload}"
required="true" allowTypes="/(\.|\/)(gif|jpe?g|png)$/"
requiredMessage="You must upload a file"/>
<p:commandButton value="Submit" ajax="false"/>
</h:form>

如何只有 1 个提交按钮?

一种选择是将两者都包含在一个表单中......在常规表单上也有multipart/form-data真的是最好的选择吗?

4

1 回答 1

0

将所有字段放在一个表单中。它不会破坏任何东西,并且有两种形式是不好的,因为:

1) 浏览器期望在提交表单后,它会接收到加载新页面的数据(在当前框架中或在另一个框架中)。让他在第一个表格之后发送第二个表格可能会导致错误。

2) JSF 期望 POST 意味着新页面/视图已准备好。以下来自同一页面的 POST 可能会被忽略。

3) 如果您使用 AJAX,则 1 & 2 不正确。也就是说,如果您想同时发送两种表单,那么使用 AJAX 是没有意义的。而且,如果您仍然这样做,您将在请求中上传一个文件,在另一个中上传一个表单,并且您必须以某种方式在服务器中将一个与另一个匹配。

4) 将所有内容放在一起经过充分测试、尝试和理解。有数千页解释如何配置过滤器、访问数据等。

于 2013-01-23T13:45:35.650 回答