Jsf 不能';隐藏&x27;rich:文件上传

Jsf 不能';隐藏&x27;rich:文件上传,jsf,richfaces,seam,facelets,ajax4jsf,Jsf,Richfaces,Seam,Facelets,Ajax4jsf,我正在尝试创建一个使用rich:fileUpload的页面,以便(出乎意料地)上传一个图像,一旦上传完成,我想“隐藏”rich:fileUpload组件并显示jQuery插件jCrop,以便在保存之前裁剪图像。从选定的裁剪保存图像后,这两个组件应再次切换其可视性 然而,我似乎无法发财:文件上传到“隐藏”。jCrop组件显示良好,jCrop功能也显示良好。但无论我尝试什么,rich:fileUpload仍然显示在屏幕上。实际上,如果我将rendered=“#{!uploadAndCrop.newI

我正在尝试创建一个使用rich:fileUpload的页面,以便(出乎意料地)上传一个图像,一旦上传完成,我想“隐藏”rich:fileUpload组件并显示jQuery插件jCrop,以便在保存之前裁剪图像。从选定的裁剪保存图像后,这两个组件应再次切换其可视性

然而,我似乎无法发财:文件上传到“隐藏”。jCrop组件显示良好,jCrop功能也显示良好。但无论我尝试什么,rich:fileUpload仍然显示在屏幕上。实际上,如果我将
rendered=“#{!uploadAndCrop.newImage}”
添加到rich:fileUpload所在的rich:panel中,似乎没有任何更新。我必须删除它才能显示jCrop组件

我的代码如下,有点混乱,因为我尝试了很多不同的东西。如果有人能为我指出正确的方向,或建议更好的方法,我将不胜感激

谢谢


//  //

我不知道您的
UploadCrop.newImage
方法如何,但您可以使用布尔值并在fileUploadListener上将其设置为false

但是重新输入
,而不是
或组

<a4j:outputPanel id="uploadpanel" rendered="#{bean.fileUpRendered}">
   (...)

   <rich:fileUpload...
      <a4j:support event="onuploadcomplete"
                            reRender="info, uploadpanel, cropgroup" />
   </rich:fileUpload>

   (...)
</a4j:outputPanel>

为什么你不能直接在文件上使用渲染,自己上传呢?我试过了,也没用。它只是做同样的事。。。文件上载时,文件上载显示上载的文件名,但不重新提交任何内容。这就好像在某个地方抛出了一个错误,停止了进一步的执行,并且没有输出“stacktrace”。
<a4j:outputPanel id="uploadpanel" rendered="#{bean.fileUpRendered}">
   (...)

   <rich:fileUpload...
      <a4j:support event="onuploadcomplete"
                            reRender="info, uploadpanel, cropgroup" />
   </rich:fileUpload>

   (...)
</a4j:outputPanel>
Boolean fileUpRendered;

(...)

public void listener(UploadEvent event) throws Exception {
   try {
      (...)

      fileUpRendered = false;
   catch (...) { (...) }

}

//Get set
public get/set fileUpRendered() { }...