【问题标题】:JSF datatable refresh on page load页面加载时 JSF 数据表刷新
【发布时间】:2010-02-16 22:25:31
【问题描述】:

我在 JSF 中有一个数据表,当用户选择下拉菜单时会填充该数据表。该表显示的列表来自一个支持 bean。此支持 bean 在会话范围内。所以当用户点击网页的其他链接并返回到这个页面时,它仍然会显示数据列表中的数据以及之前的选择。

问题是 - 如何确保在用户离开页面时重置数据,以便当用户返回时,他们可以看到一个没有数据的新页面。

我不能将支持 bean 放在请求范围内,因为这将导致无法拥有购物车类型的应用程序。

【问题讨论】:

    标签: jsf


    【解决方案1】:

    将数据模型保留在会话范围的 bean 中,添加一个请求范围的 bean,它从会话范围的 bean 中复制引用,并让表单提交给该请求范围的 bean,并让视图使用请求范围的 bean。您可以通过在每个托管属性注入下从请求范围 bean 内部访问会话范围 bean。例如

    <managed-bean>
        <managed-bean-name>cart</managed-bean-name>
        <managed-bean-class>com.example.Cart</managed-bean-class>
        <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>
    
    <managed-bean>
        <managed-bean-name>showCart</managed-bean-name>
        <managed-bean-class>com.example.ShowCart</managed-bean-class>
        <managed-bean-scope>request</managed-bean-scope>
        <managed-property>
            <property-name>cart</property-name>
            <value>#{cart}</value>
        </managed-property>
    </managed-bean>
    

    ShowCart 可能如下所示:

    public class ShowCart {
        private Cart cart;
        private Cart show;
        // +getters+setters
    
        public String submit() {
            show = cart;
            // ...
        }
    }
    

    视图改用#{showCart.show}

    【讨论】:

    • 感谢 BalusC 的解决方案。我将使用它,我希望它在 JSF 1.1 中也可用。
    猜你喜欢
    • 1970-01-01
    • 2020-06-17
    • 1970-01-01
    • 1970-01-01
    • 2021-01-07
    • 2013-01-31
    • 1970-01-01
    • 2012-08-13
    相关资源
    最近更新 更多