JSF+;rich:fileupload+;param
我正在使用JSF+;rich:fileupload+;param,jsf,null,richfaces,param,Jsf,Null,Richfaces,Param,我正在使用,需要向控制器发送一些额外的参数。我试着用来做这个 以下是视图: <rich:fileUpload fileUploadListener="#{fileUploadController.listener}" maxFilesQuantity="#{fileUploadController.uploadsAvailable}" addControlLabel="Hinzufügen" uploadControlLabel="Hochladen"
,需要向控制器发送一些额外的参数。我试着用
来做这个
以下是视图:
<rich:fileUpload
fileUploadListener="#{fileUploadController.listener}"
maxFilesQuantity="#{fileUploadController.uploadsAvailable}"
addControlLabel="Hinzufügen"
uploadControlLabel="Hochladen"
cancelEntryControlLabel="Abbrechen"
doneLabel="Fertig"
clearAllControlLabel="Alle entfernen"
noDuplicate="true"
stopControlLabel="Stop"
clearControlLabel="Entfernen"
id="upload"
immediateUpload="#{fileUploadController.autoUpload}"
ajaxSingle="true"
acceptedTypes="jpg"
allowFlash="#{fileUploadController.useFlash}"
rerender="info">
<a4j:support event="onuploadcomplete" reRender="info" status="globalStatus" />
<f:param
value="#{imageFormat}"
name="#{fileUploadController.imageFormat}"/>
</rich:fileUpload>
但是,从未调用setter,因此变量始终为null
。{imageFormat}
的值是正确的,我用
验证了它
我不能使用
,因为没有可挂接的按钮
我们使用的是JSF 1.2,而不是JSF 2.0。要在上传的特定阶段执行一些操作,可以附加到rich:fileUpload事件。除了标准事件外,rich:fileUpload还提供了许多特定事件:
- “onadd”事件处理程序在添加文件操作中调用
- “onupload”允许您在 客户端
- 在列表中的所有文件之后调用的“onuploadcomplete” 已上载
- 上载被取消后调用的“onuploadCancelled” 通过取消控制
- 如果文件上载被中断,则调用“onerror” 根据任何错误
<rich:fileUpload
yourParameters="...">
<a4j:support event="onuploadcomplete" reRender="something" action="#{fileUploadController.setImageFormat(imageFormat)}"/>
</rich:fileUpload>
并使用“a4j:jsFunction”(还演示了如何使用setPropertyActionListener,如果您的EL解析器不支持带参数的方法调用(请参阅BalusC注释),那么就是这种情况)
我不明白你的意思,但如果你想知道图像格式,你在listener方法中拥有的整个图像,你可以很容易地确定格式是什么。不,我有一个字符串,它是#{imageFormat}(应该是什么格式),我只想知道,如何从我的rich:fileupload到我的controlleri中获取参数如果使用f:param的这种方法能够奏效,那么它应该是:@Andrey:但是#{fileUploadController.imageFormat}中的值为null,我想通过一个参数填充它。。。。有可能这样做吗?类似于:@Joerg我指定了rich:fileUpload支持的更多事件。如果不是您想要的,请提供更多详细信息,imageFormat变量是什么,它来自何处,以及它的用途。在EL 2.2之前,不支持使用EL中的参数调用非getter方法。由于OP使用的是JSF1.2,我怀疑他运行的是一个支持EL2.2的容器(EL2.2是JavaEE6的一部分,JavaEE6反过来提供了JSF2.0)。@BalusC关于参数调用的方法。我不想用这些细节来过多地回答问题,只是想演示一下方法。如果Joerg使用JBoss EL,它可能会像Joerg那样工作。如果不是在这种特殊情况下,f:setPropertyActionListener是合适的。
<rich:fileUpload
yourParameters="...">
<a4j:support event="onuploadcomplete" reRender="something" action="#{fileUploadController.setImageFormat(imageFormat)}"/>
</rich:fileUpload>
<rich:fileUpload onupload="setImageFormat();"
yourParameters="..."></rich:fileUpload>
<a4j:jsFunction name="setImageFormat">
<f:setPropertyActionListener value="#{imageFormat}" target="#{fileUploadController.imageFormat}"/>
</a4j:jsFunction>