Jsf rich:fileUpload提交整个表单
考虑这段代码,它依赖于JSF2和RichFaces 4.5.0作为使用过的组件库Jsf rich:fileUpload提交整个表单,jsf,jsf-2,richfaces,Jsf,Jsf 2,Richfaces,考虑这段代码,它依赖于JSF2和RichFaces 4.5.0作为使用过的组件库 // some non-relevant attributes are omitted <rich:fileUpload fileUploadListener="#{bean.uploadListener}"> <a4j:ajax event="uploadcomplete" render="imagePanel" immediate="true" /> </ric
// some non-relevant attributes are omitted
<rich:fileUpload fileUploadListener="#{bean.uploadListener}">
<a4j:ajax event="uploadcomplete" render="imagePanel" immediate="true" />
</rich:fileUpload>
//省略了一些不相关的属性
表单中的给定标记提交整个表单。例如,这不是我期望的行为。我希望组件只提交自身的表单属性,并跳过同一表单中的其他表单值,如RichFaces 3中的ajaxSingle
我在这个主题上做了一些研究,但没有找到任何关于如何管理fileUpload组件的部分表单提交的结论,特别是因为这个标记没有执行属性,就像其他几个jsf ajax组件一样
如果您能在这个案例中提供帮助,我将不胜感激,尤其是如何管理fileUpload组件只向服务器提交自己的表单值。请尝试
a4j:ajax的execute
属性
从文档:
执行:将参与请求处理生命周期“执行”部分的组件的ID。可以是单个id、以空格或逗号分隔的id列表,也可以是对数组或集合求值的EL表达式。标识符列表中可以指定任何关键字“@this”、“@form”、“@all”、“@none”、“@region”。有些组件使用其他关键字
我想这正是你需要的
更多信息:您可以将其以单独的形式发布。它破坏了什么吗?不幸的是,这对我们来说只是一个肮脏的解决办法,因为fileupload组件集成在依赖单一表单的UI中。有人找到了解决方案吗?我正在处理同一个项目,并接管了该问题。出于测试目的,我完全删除了a4j:ajax,并向rich:fileUpload本身添加了一个execute=“@this”,但仍然提交了整个表单。奇怪的是,作为请求URL的正常请求参数,而不是作为部分ajax请求的POST参数。您是否尝试在a4j:ajax
上添加execute=“@this”
?或者您尝试过f:ajax
而不是a4j:ajax
?我完全删除了a4j:ajax
rich:fileUpload本身执行基于ajax的上传(正如预期的那样),这已经导致完整表单作为请求参数提交。事实上,在某些情况下,由于转义错误或请求参数过长,这会导致服务器错误。我使用chrome的网络监视器进行调试,它清楚地显示了上述行为。我现在切换到PrimeFaces的文件上传,效果很好。是的,我明白了,我在问你是否也尝试过其他选项。。抱歉我的英语不好:(.谢谢你的信息,如果我有时间,我会做一些测试。是的,完全放弃RF上传,用PrimeFaces一个替换。迁移相对容易,处理上传的机制几乎相同。