java - 存储每个用户的网格状态并存储服务器端 - EXT GWT

标签 java gwt extjs gxt

所以我一直在互联网上寻找如何在我的服务器上存储 EXT 分页网格状态,以便当用户重新登录到他们的网格时,这就是他们保存它的方式。

我找到了这个http://www.sencha.com/forum/showthread.php?64688-How-can-i-save-Grid-state-using-GXT但这是一条古老而死的线索。

我现在拥有的是:

grid.getState() 返回所有列大小、排序和隐藏字段的映射。

这是转储到字符串的示例:

{偏移=0,限制=25,widthfieldname1=161,widthfield2=110,hiddenfield3=true}

我可以将这些键/值存储在一个带有字段(用户名、键、值)的简单表中,然后重新创建此映射并将其传递到前端。

这是我的问题:

有人有完整实现 GXT 2.4 存储、检索和应用网格状态的代码示例吗?

如果没有。我将如何实现一个?我确信我可以将状态图存储在数据库或 XML 中。我不知道如何将其应用到新 session 中。如何将此州 map 应用到新网格?

最佳答案

状态管理已经内置到许多组件中,也内置到网格中。 默认的 GXT 实现使用 Cookie(看看 com.extjs.gxt.ui.client.state.CookieProvider )来存储网格的状态,您只需使网格有状态并给它一个唯一的 stateId:

grid.setStateful(true);
grid.setStateId("myGridUniqueId");

如果需要其他存储,则需要扩展 com.extjs.gxt.ui.client.state.Provider ,实现存储/加载逻辑,然后将其传递给 com.extjs.gxt.ui.client.state.StateManager ,这将非常简单:

public static class MyProvider extends Provider {

    @Override
    protected void clearKey(String name) {
        // clearing logic
    }

    @Override
    protected String getValue(String name) {
        // read logic
    }

    @Override
    protected void setValue(String name, String value) {
        // store logic
    }
}

StateManager.get().setProvider(new MyProvider());

另请注意,状态管理 is changed在 GXT3 中,如果您需要在不久的将来迁移到 3.0,您应该记住这一点。

关于java - 存储每个用户的网格状态并存储服务器端 - EXT GWT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12961004/

相关文章:

extjs - 通过函数以编程方式应用网格过滤器

javascript - Extjs 4.2.1 堆叠条形图最小值和最大值根据商店变化

java - Linux 中文件的奇怪 getName() 结果

java - ContainerResponseFilter 未执行

javascript - GWT:windowClosing 处理程序未在 chrome 中正确处理

java - 无法使用 ant 运行 GWTTestCase 测试

model-view-controller - Extjs 使用商店创建动态 Accordion

java - Ascii 到 Hex 转换错误

java - Delphi 中通过 Java Bridge 使用 DocumentBuilderFactory 时出现段错误

java - 阻止事件在 GWT 中冒泡