Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JSF+;rich:fileupload+;param_Jsf_Null_Richfaces_Param - Fatal编程技术网

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” 根据任何错误
要在事件发生时使用AJAX调用服务器端逻辑,请使用“a4j:status”或“a4j:jsFunction”,例如使用“a4j:status”:

<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>