我已经和 zk 玩了一段时间了,现在是严肃的事情。我已经成功地集成了 spring 和 zk,并且路由在我使用 @controller
annotation.so 时工作正常。到目前为止一切都很好
现在我需要调用一个返回对象列表的网络服务
import org.springframework.ui.Model;
//.....
@RequestMapping("/accounts/personal/list")
public String list(Model model){
try {
ArrayOfAccount result = port.getAccounts( null, 0, 20);
//i thought with this i can grab the result collection.
List<IAccount> accounts = result.getIAccount();
model.addAttribute("accounts", accounts);
} catch (Exception ex) {
// TODO handle custom exceptions here
}
return "accountslist";
}
真正的问题是在 zul 文件中获取对象。
<?xml version="1.0" encoding="UTF-8"?>
<?init class="org.zkoss.zk.ui.util.Composition" arg0="/templates/mainlayout.zul"?>
<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit"?>
<!--<?variable-resolver class="org.zkoss.spring.DelegatingVariableResolver"?>-->
<!--<?variable-resolver class="org.zkoss.spring.init.WebflowVariableResolver"?>-->
<?taglib uri="http://www.zkoss.org/dsp/web/core" prefix="c"?>
<zk xmlns="http://www.zkoss.org/2005/zul">
<window self="@{define(content)}" id="pAccountWin">
<label id="lblTest" value="click me" />
<div>
<listbox model="${c:l('accounts')}" id="lstAccount" multiple="true">
<listhead>
<listheader label="Account Name" />
<listheader label="Account Type" />
<listheader label="Mobile Phone" />
</listhead>
<listitem forEach="${c:l('accounts')}" value="${each}" >
<listcell label="${each.getAccountName()}" />
<listcell label="${each.getAccountType()}" />
<listcell label="${each.getMobilePhone()}" />
</listbox>
</div>
</window>
</zk>
它没有抛出错误,但我觉得我做的不对。而且我也知道我可以使用 GenrericForwardComposer 来实现同样的效果,而无需“麻烦”(我相信)。这让我对我是否做对感到困惑事物。
问题 1:
我怎样才能实现我试图做的事情,将账户变量传递给前端?
问题 2:使用 ZKspring(无 webflows)的最佳方式是什么?Spring Controller 做路由和 ForwardComposer 处理 ajax 行为(即事件)?例如,当仅采用 Spring MVC 方式时,是否应该编写代码来处理 ajax 调用?
问题 3:我在此使用列表框,但我需要从所选对象的上下文菜单中执行操作。您认为网格适合它吗?
感谢您阅读本文。