gpt4 book ai didi

java - Vaadin portlet 模式更改

转载 作者:行者123 更新时间:2023-11-29 03:53:25 27 4
gpt4 key购买 nike

我有一个具有两种模式的 Liferay Vaadin portlet:编辑和查看模式。我在 portlet 中看到的第一件事是带有标签的 viewContent:“未配置”,如果 portlet 未配置。现在,如果我在 Editmode 中配置 portlet,我会看到我在配置中所做的东西,它目前有效但是现在,如果我注销或重新启动浏览器(退出并重新启动),我会看到带有标签(“未配置”)的未配置 viewContent

代码:

Window window; // Main Window
VerticalLayout viewContent; // View Mode Content
VerticalLayout editContent; // Edit Mode Content(Configs)
Label viewText;
Button b;
Panel panel;
Embedded PictureA;

public void init() {
window = new Window("");
setMainWindow(window);
viewContent = new VerticalLayout();
editContent = new VerticalLayout();
PictureA = new Embedded("", new ExternalResource(PictureAURL));
PictureA.setType(Embedded.TYPE_IMAGE);

panel = new Panel();
panel.setStyleName(Reindeer.PANEL_LIGHT);

// viewContent
viewText = new Label("Not Configured" , Label.CONTENT_XHTML);
viewContent.addComponent(viewText);
window.setContent(viewContent);

// EditContent
b = new Button("PictureA");
b.addListener(this):
editContent.addComponent(b);
}

public void buttonClick(ClickEvent event) {
if (event.getSource == b) {
viewContent.revomeComponent(viewText);
panel.addComponent(PictureA);
viewContent.addComponent(panel);
}
}

@Override
public void handleRenderRequest(RenderRequest request,
RenderResponse response, Window window) {

}

@Override
public void handleActionRequest(ActionRequest request,
ActionResponse response, Window window) {

}

@Override
public void handleEventRequest(EventRequest request,
EventResponse response, Window window) {

}

@Override
public void handleResourceRequest(ResourceRequest request,
ResourceResponse response, Window window) {

// Switch the view according to the portlet mode
if (request.getPortletMode() == PortletMode.EDIT)
window.setContent(editContent);
else if (request.getPortletMode() == PortletMode.VIEW)
window.setContent(viewContent);
}

情况:如果我点击按钮“PictureA”,标签“Not Configured”被删除,带有嵌入图片的面板被添加到 viewContent。

唯一的问题是它没有被保存:/有什么想法吗?也许我忘记了什么?

最佳答案

是的,您没有在任何地方保存配置。当 session 结束(关闭浏览器)并重新打开您的应用程序时,init 将再次执行并恢复原始的“未配置”状态。

例如,您可以将其存储到 portlet 首选项中。在 handleResourceRequest 方法中,您必须获取 PortletPreferences 的句柄:

this.prefs = request.getPreferences();

要在按钮单击处理程序中保存状态,请执行以下操作:

this.prefs.setValues("myapp.configured", new String[] {"true"});
this.prefs.store();

您还想恢复 handleResourceRequest 方法中已有的状态。做这样的事情:

boolean configured = Boolean.parseBoolean(this.prefs.getValues("myapp.configured", new String[] { "false" })[0]);

if (configured && PictureA.getParent() == null) {
// PictureA is not visible, but it should be.
viewContent.removeComponent(viewText);
panel.addComponent(PictureA);
viewContent.addComponent(panel);
}

关于java - Vaadin portlet 模式更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7684607/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com