我可以在 zk 的 hbox 中使用 include 吗?
Can I use an include inside an hbox in zk?
我的 zul 中有以下代码:
<hbox>
<include src="firstInclude.zul" />
<include src="secondInclude.zul" />
</hbox>
我一直收到 firstInclude.zul 的页面未找到错误。 firstInclude.zul 文件与包含上述代码的文件位于同一目录中。另一方面,包含上述代码的 zul 文件动态包含在模态 window 中。 window 的视图模型正在执行此任务。我究竟做错了什么?
相对包含路径根据当前桌面路径(即当前显示的 main.zul
的位置)解析。
如果您想在代码中检查这一点,请在 AbstractExecution:toAbsolutePath() 中放置一个断点并观察传入的 uri
和前置的 currentDirectory
。
(这个过程是独立于任何组件的,所以<hbox>
与它无关。而且这与动态使用无关。)
假设这个静态结构:
/pages/main.zul
/pages/sub/sub.zul
/pages/sub/sub-include.zul
main.zul
<div>
<include src="sub/sub.zul"/>
</div>
sub/sub.zul
<div>
SUB
<div>
<include src="sub-include.zul"/>
</div>
</div>
会导致这个错误:
org.zkoss.zk.ui.UiException: Page not found: /pages/sub-include.zul
at org.zkoss.zk.ui.http.ExecutionImpl.getPageDefinition(ExecutionImpl.java:385)
at org.zkoss.zul.Include.afterCompose(Include.java:509)
...
像下面这样更改包含的 src url 将解决此问题。
<include src="sub/sub-include.zul"/>
我同意这并不明显,但这就是它的行为方式。
更可靠的替代方法是使用绝对路径(以 /
开头)来避免相对路径解析问题。
<include src="/pages/sub/sub-include.zul"/>
我的 zul 中有以下代码:
<hbox>
<include src="firstInclude.zul" />
<include src="secondInclude.zul" />
</hbox>
我一直收到 firstInclude.zul 的页面未找到错误。 firstInclude.zul 文件与包含上述代码的文件位于同一目录中。另一方面,包含上述代码的 zul 文件动态包含在模态 window 中。 window 的视图模型正在执行此任务。我究竟做错了什么?
相对包含路径根据当前桌面路径(即当前显示的 main.zul
的位置)解析。
如果您想在代码中检查这一点,请在 AbstractExecution:toAbsolutePath() 中放置一个断点并观察传入的 uri
和前置的 currentDirectory
。
(这个过程是独立于任何组件的,所以<hbox>
与它无关。而且这与动态使用无关。)
假设这个静态结构:
/pages/main.zul
/pages/sub/sub.zul
/pages/sub/sub-include.zul
main.zul
<div>
<include src="sub/sub.zul"/>
</div>
sub/sub.zul
<div>
SUB
<div>
<include src="sub-include.zul"/>
</div>
</div>
会导致这个错误:
org.zkoss.zk.ui.UiException: Page not found: /pages/sub-include.zul
at org.zkoss.zk.ui.http.ExecutionImpl.getPageDefinition(ExecutionImpl.java:385)
at org.zkoss.zul.Include.afterCompose(Include.java:509)
...
像下面这样更改包含的 src url 将解决此问题。
<include src="sub/sub-include.zul"/>
我同意这并不明显,但这就是它的行为方式。
更可靠的替代方法是使用绝对路径(以 /
开头)来避免相对路径解析问题。
<include src="/pages/sub/sub-include.zul"/>