2形成不同的编码类型 - 一个提交按钮

时间:2013-01-23 12:41:45

标签: jsf primefaces

有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 的最佳选择?

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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