javascript - JSF/Spring 从一页进行多个 session - 多选项卡界面

标签 javascript spring user-interface jsf-2 primefaces

我正在尝试向我的 JSF(facelets)/Spring/应用程序添加多选项卡功能,例如 OpenBravo 已经具备的功能( http://wiki.openbravo.com/w/images/9/9c/WIK_PartsOfScreen.png ,但他们的应用程序使用不同的技术 - 我猜 - 用于 GUI 的纯 JavaScript):每个文档或报告都可以在单独的 JavaScript 选项卡中打开。

基本上很简单 - 每个文档或报告都是单独的 JSF 区域,并且只有其中一个可见。标签只是视觉效果。

问题在于与 JSF 支持 bean(或有时可用于此 Angular 色的 Spring bean)的通信。 E.e.对于一个选项卡界面来说很简单:可以创建以下 bean:

class BankDocumentServiceBean {
    BankDocument selectedDocument;
    Long id;

    void setId(Long id) {
        if (selectedDocument.id!=id) {
            setupBankDocument(id);
        }
    }
    void setupBankDocument(Long id) {...}
    BankDocument getBankDocument() {...}
    ...
}

BankDocument JSF 页面可以是这样的:

...
<f:metadata> <!-- page is called with parameter id and this code calls setId(...) -->
    <f:viewParam name="id" value="#{bankDocumentServiceBean.id}"/>  
</f:metadata>

<h:body>
...
    <!-- p for Primefaces -->
    <p:inputText id="amountTxt" 
        value="#{bankDocumentServiceBean.selectedDocument.amount}" 
        required="true" label="amountLbl"/>  
    <p:message for="amountTxt" />  
    ...

这种方法总体上好吗?

主要问题是 - 如何将这种单文档方法扩展到多个选项卡。 JSF 代码可以动态地包含在页面中,但服务 bean 仍然是问题。在每次调用中使用附加参数可以是解决方案 - 例如BankDocumentServiceBean 不能包含单个 BankDocument,而是包含 BankDocuments 列表,并且每个操作(例如 getBankDocument)可以具有附加标识符,用于从集合中选择正确的 bean,即与用户交互的选项卡相关的 bean。

但也许有更好的方法。例如。也许一页可以是旧的单文档 BankDocumentServiceBean 的多个实例。也许有不太粗略的作用域(JSF 作用域和 Spring 作用域)适合选项卡,某种对话作用域?

每个选项卡都位于其自己的常规面板 (div) 中,并具有不同的 id。也许 JSF/Spring 应用程序可以检测到请求来自不同的 panel/div 并相应地选择 BankDocumentServiceBean 的实例?

我想 - 使用列表和参数的解决方案会起作用,但也许有更好的架构?谢谢!

最佳答案

不是一个完整的解决方案,而是在 jsf Web 应用程序中处理多个浏览器选项卡的一个很好的起点:

  1. 关于处理多个选项卡的非常好的读物:http://myfaces.apache.org/orchestra/myfaces-orchestra-core/multiwindow.html

  2. 我还推荐Apache Codi范围。

关于javascript - JSF/Spring 从一页进行多个 session - 多选项卡界面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16325327/

相关文章:

javascript - 获取两个日期之间的天数

spring.job.启用: true causing junit jobs to run twice

spring - 将Spring集成依赖项添加到项目中时,LocationAwareLogger异常

java - 无法在 mybatis+jersey Web 应用程序上集成 spring

java - Gui JList Action 监听器

javascript - jquery iframe 事件与 mozilla 一起使用吗?

javascript - Angular2 - 未捕获的 ReferenceError : ng is not defined

java - AWT Canvas 在手动调整大小时闪烁

css - 可定制的CSS

javascript - 为什么这个脚本不接受任何阿拉伯语输入?