如何将模式 windows 与 ZK 和 spring 一起使用?

How to use modal windows with ZK and spring?

我正在升级 ZK,我在创建模态时遇到了一些问题 windows。因为它们是在另一个线程中创建的,所以没有 hibernate 和 springsecurity 会话 。如何在不丢失 servlet 变量上下文的情况下在我的应用程序上调用 window 组件?

例如,应用程序根据用户的偏好创建了一个 window,但是当我单击“保存”时,它会引发“无休眠会话”错误。

在整个项目中,有 .zul 个带有 window 组件的文件,这些文件在作曲家中通过单击事件调用:

<?xml version="1.0" encoding="UTF-8"?>
<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit"?>
<?variable-resolver class="org.zkoss.zkplus.spring.DelegatingVariableResolver"?>
<?link rel="shortcut icon" type="image/x-icon" href="/static/images/favicon.ico"?>

<zk xmlns="http://www.zkoss.org/2005/zul"
    xmlns:h="http://www.w3.org/1999/xhtml"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.zkoss.org/2005/zul http://www.zkoss.org/2005/zul/zul.xsd">
    <window title="Projetos" apply="common.PreferencesComposer"
            maximizable="true" minimizable="true" closable="true" maximized="true"
            mode="overlapped" border="normal" height="100%" width="100%"
            style="opacity:0.94;">
            [hidden for brevity]
    </window>
</zk>

Composer onClick 方法:

Window win = (Window) Executions.createComponents("/common/preferences.zul", null, args);
win.doModal();

...它们是在另一个线程中创建的...

如果您在 ZK 作曲家的 onClick 侦听器中创建模式 window,那么它应该在 servlet 线程中。

除非您启用已弃用的 Event Threads。 我强烈建议您禁用事件线程,因为它违反了 Java Servlet 规范并使您难以与 Spring.

等其他框架集成

记得阅读 Event Threads 以更新与某些组件相关的代码,例如模态 window 或消息框。

如何在我的 Spring 应用程序中使用 window 组件?

问题不清楚。你指的具体用法是什么? 您可以在 composer 中放置一个 varialbe 解析器,以将 spring bean 连接到 composer 中并使用该 bean。请参考

注意该示例仅适用于 spring 4.3 或更早版本。