代码之家  ›  专栏  ›  技术社区  ›  Shamik

页面加载时的JSF数据表刷新

jsf
  •  2
  • Shamik  · 技术社区  · 16 年前

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

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

    我不能将支持bean放在请求范围内,因为这将使得不可能有Cart类型的应用程序。

    1 回复  |  直到 16 年前
        1
  •  4
  •   BalusC    16 年前

    将数据模型保留在会话作用域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} 相反。

    推荐文章