java - 我可以在 zk 的 hbox 中使用包含吗?
问题描述
我的 zul 中有以下代码:
<hbox>
<include src="firstInclude.zul" />
<include src="secondInclude.zul" />
</hbox>
我不断收到 firstInclude.zul 的 page-not-found 错误。firstInclude.zul 文件与包含上述代码的文件位于同一目录中。另一方面,包含上述代码的 zul 文件被动态包含在模式窗口中。窗口的视图模型正在执行此任务。我究竟做错了什么?
解决方案
相对包含路径根据当前桌面的路径(即main.zul
当前显示的位置)进行解析。
如果您想在代码中检查这一点,请在AbstractExecution:toAbsolutePath()中放置一个断点,并观察哪些uri
被传入,哪些currentDirectory
被前置。
(此过程独立于任何组件,因此<hbox>
与它无关。这也与动态使用无关。)
假设这个静态结构:
/pages/main.zul
/pages/sub/sub.zul
/pages/sub/sub-include.zul
主.zul
<div>
<include src="sub/sub.zul"/>
</div>
子/子.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"/>
我同意这并不明显,但这就是它的行为方式。
更强大的替代方法是使用绝对路径(以 a 开头/
)来避免相对路径解析问题。
<include src="/pages/sub/sub-include.zul"/>
推荐阅读
- c# - 如何在 ASP.NET 中使用列表和 SQL Server 获取数据
- jquery - 字体粗细 !important 在元素标识中被覆盖
- javascript - const App: () => React$Node = () => {...}: 这个指令是什么意思?
- julia - SymPy.jl 与在 python 中使用 SymPy 相比的特征值的奇怪报告
- python-3.x - Python 无法访问我的 USB 设备 - 权限不足
- dataframe - 如何获取火花行的 value_counts?
- ios - 反应原生自定义按钮仅在 iOS 上不可点击
- javascript - 订阅和取消订阅主题 - firebase
- python - 如果其他属性为 != 无,如何将类输出为嵌套字典并计算属性
- python - Python Django:在数据库保存()上从服务器向客户端发送消息