我正在开发一个使用 Spring (Spring MVC) 和 Hibernate 的项目,这两个都是最新版本。对于前端,我使用的是 Zk 6.5.0。这是问题所在:
我有一个这样的控制器:
public class SearchController extends SelectorComposer<Component> {
private static final long serialVersionUID = 1L;
@WireVariable("MjestaAutoComplete")
private AutoComplete<Mjesta> mjesta;
@Listen("onChanging = #mj")
public void autocomplete(InputEvent event) {
if (mjesta == null) {
Messagebox.show("Mjesta == Null");
return;
} else {
mjesta.doSomething();
}
}
}
Zul 页面如下所示:
<?variable-resolver class="org.zkoss.zkplus.spring.DelegatingVariableResolver"?>
<zk>
<div apply="hr.restart.erp.web.controller.SearchController">
<combobox id="mj" autocomplete="true" autodrop="true" />
</div>
</zk>
这是使用 ZK JSP 标签的 jsp(只是相关部分):
<z:variable-resolver use="org.zkoss.zkplus.spring.DelegatingVariableResolver" />
<z:page>
<z:div apply="hr.restart.erp.web.controller.SearchController">
<z:combobox id="mj" autocomplete="true" autodrop="true"></z:combobox>
</z:div>
</z:page>
如果我通过 jsp 的 include 指令在 jsp 中包含 zul 页面,则代码正常执行,即“mjesta”不为空。如果我删除指令并使用 zk jsp 标签而不是“mjesta”对象为空。当代码相同时,这怎么可能?我可以向自己解释这一点的唯一方法是“mjesta”没有自动接线,但这没有多大意义……有人能弄清楚吗?