2012-12-19 50 views
1

我需要帮助!我花了几天时间寻找解决方案来解决以下用例。请原谅我没有代码。在两个单独的jsf页面之间传递值

一个网络输入/编辑形式:

用户详细信息 - 包含用户名,uploadfileName等,和 '保存' 和 '上传' 按钮,在他的细节

  1. 用户填写
  2. 用户点击“上传”
  3. 系统打开Primefaces的FileUpload屏幕
  4. 用户上传图片
  5. 系统关闭Primefaces FileUpload自定义屏幕
  6. 系统使用上传的 fileName更新uploadfileName outputText。
  7. 用户单击以保存用户详细信息。
  8. 系统验证并保存用户详细信息。

Primefaces文件上传定制画面:该被嵌入在对话框和是在一个单独的XHTML文件(可重用性)。

问题是如何通过Upload对话框中的uploadedfileName值来更新调用(主)用户页面中的uploadfileName outputText。

例如,在Vaadin中,在Trinidad的情况下,可以使用ActionListener或ReturnActionListener。

感谢您的帮助(提前)。

回答

0

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

@ManagedBean 
@ViewScoped 
public class Register { 
    // ... 
} 

您可以将视图范围化的bean彼此注入。您可以在注册表单的bean中注入上载表单的bean,并在action方法中访问它。

@ManagedBean 
@ViewScoped 
public class Register { 

    @ManagedProperty("#{upload}") 
    private Upload upload; 

    // ... 
} 

不要紧,如果它是物理上独立的页面,只要将其包括在例如一个相同的母版视图<ui:include>或组合,则在回发中维护相同的视图状态。

+0

感谢BalusC,为您快速回复。如果您的解决方案有效,我会回来再多谢。我已经在这个问题上浪费了很多时间,我需要从中解脱出来。 BTW这是否意味着我弹出的包含Primefaces FileUpload的dialog.xhtml不能包含f:view? –

+0

为什么要这样呢?它最终只是同一个HTML页面的一部分,并且绝对不应该包含''。请注意,我假设你正在使用''。 – BalusC

+0

是的,你的假设是正确的。感谢您的额外信息。 –