File upload 在两个单独的jsf页面之间传递值

File upload 在两个单独的jsf页面之间传递值,file-upload,jsf-2,primefaces,File Upload,Jsf 2,Primefaces,我需要帮助!我花了几天时间断断续续地寻找以下用例的解决方案。请原谅我没有密码 一个Web输入/编辑表单: 用户详细信息–包含用户名、上载文件名等和“保存” 和“上传”按钮 用户填写他的详细信息 用户点击“上传” 系统打开Primefaces文件上载屏幕 用户上传图片 系统关闭Primefaces文件上载自定义屏幕 系统使用上载的文件名更新上载的文件名输出文本 文件名 用户单击以保存用户详细信息 系统验证并保存用户详细信息 Primefaces FileUpload自定义屏幕:该屏幕嵌入在对话框中

我需要帮助!我花了几天时间断断续续地寻找以下用例的解决方案。请原谅我没有密码

一个Web输入/编辑表单:

用户详细信息–包含用户名、上载文件名等和“保存” 和“上传”按钮

  • 用户填写他的详细信息
  • 用户点击“上传”
  • 系统打开Primefaces文件上载屏幕
  • 用户上传图片
  • 系统关闭Primefaces文件上载自定义屏幕
  • 系统使用上载的文件名更新上载的文件名输出文本 文件名
  • 用户单击以保存用户详细信息
  • 系统验证并保存用户详细信息
  • Primefaces FileUpload自定义屏幕:该屏幕嵌入在对话框中,并位于单独的xhtml文件中(用于重用)

    问题是如何从上载对话框传递uploadedfileName值,以更新调用(母版)用户页面中的UploadeFileName输出文本

    例如,在Vaadin中,特立尼达岛可能使用ActionListener或ReturnActionListener


    (提前)感谢您的帮助。

    将bean放入视图范围。然后,同一视图中的所有表单都可以使用同一个bean实例

    @ManagedBean
    @ViewScoped
    public class Register {
        // ...
    }
    
    您可以将视图范围的bean相互注入。您可以将上传表单的bean注入注册表单的bean中,并在action方法中访问它

    @ManagedBean
    @ViewScoped
    public class Register {
    
        @ManagedProperty("#{upload}")
        private Upload upload;
    
        // ...
    }
    

    不管它是物理上独立的页面,只要您将它们包含在一个相同的主视图中(例如,
    或复合视图),那么回发中会保持相同的视图状态。

    感谢BalusC,感谢您的快速响应。如果你的解决办法奏效,我会再来多谢你的。我已经在这个问题上浪费了这么多时间,我需要休息一下。顺便说一句,这是否意味着包含Primefaces文件上载的popup dialog.xhtml不能包含f:view?为什么会这样?它最终只是同一HTML页面的一部分,绝对不应该包含
    。请注意,我假设您使用的是
    。是的,您的假设是正确的。感谢您提供的附加信息。不必将这两个bean都设置为
    @ViewScoped
    ,是否可以将
    UploadBean
    设置为
    @RequestScoped
    并将
    注册表项注入其中?之后,我们可以调用
    RegisterBean
    set
    方法来更新上传的项目名称?@Mr.J4mes:这对通过非ajax提交上传的
    mode=“simple”
    有效,但如果通过ajax上传,而ajax上传的请求与提交请求不同,则无法实现。