嘿伙计们,我想处理持久化数据,以便在退出前保存我的应用程序状态。好吧,为了试一试,我在MPART中创建了一个脏对象,然后添加了一个链接到菜单项的保存处理程序。
这是: MPART:
txtInput.addModifyListener(new ModifyListener() {
@Override
public void modifyText(ModifyEvent e) {
dirty.setDirty(true);
}
});
处理程序:
@Execute
public void execute(EPartService partService) {
partService.saveAll(false);
}
最后,我还从正在运行的配置中删除了-clearpersistedstate参数,但每次启动我的应用程序时,它都不会保存MPART中的更改,而只会在透视级别更改。例如:如果MPART已关闭执行后,它将保持关闭状态。
任何提示?
答案 0 :(得分:1)
EPartService.saveAll
只调用部件中带@Persist
注释的任何方法。无论如何,当工作区关闭时,这将自动完成。
注意:必须将部件标记为脏,才能调用@Persist方法。
因此,要保存零件中的任何细节,您需要一种方法:
@Persist
void save()
{
... save your data somewhere
}
再次创建零件时,您必须从保存的数据中加载数据。
保存数据的一个地方是MPart
持久状态 - 通过以下方式访问:
Map<String, String> persistedState = part.getPersistedState();
您可以在此地图中保存字符串值。
所以:
@Persist
void save(MPart part)
{
Map<String, String> persistedState = part.getPersistedState();
persistedState.put("key for my value", "my value");
}
并使用以下命令检索它:
@PostConstruct
void createPart(MPart part)
{
Map<String, String> persistedState = part.getPersistedState();
String myValue = persistedState.get("key for my value");
}
答案 1 :(得分:0)
格雷格 我已经理解了如何使用Map类型,但我没有理解我的Map变量如何成为&#34; persistent&#34;。我的实现如下:
persistedState = part.getPersistedState();
System.out.println(persistedState.get("1"));
...
@Persist
public void save() {
dirty.setDirty(false);
persistedState.put("1", "test1");
}
当我退出应用程序时,显然不起作用,我仍然想念最后一块拼图。 它是否与Preference Store /写入包含我的东西的文件有关?