页面加载时刷新JSF数据表

时间:2010-02-16 22:25:31

标签: jsf

我在JSF中有一个数据表,当用户选择下拉菜单时会填充该数据表。表显示的列表来自辅助bean。此辅助bean位于会话范围内。因此,当用户点击网页的其他链接并返回此页面时,它仍会显示数据列表中包含先前选择的数据。

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

我不能将支持bean放在请求范围内,因为这样就不可能有购物车类型的应用程序。

1 个答案:

答案 0 :(得分:4)

将datamodel保留在会话范围bean中,添加一个请求范围的bean,它从会话范围bean复制引用,并让表单提交给该请求范围的bean,并让视图使用请求范围的bean。您可以在每个托管属性注入下从请求范围内的bean中访问会话范围的bean。 E.g。

<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}代替。