Java zk层次结构获取数据库



我在将数据提取到视图树时遇到问题。首先,我从服务impl中提取数据,并且我在视图中有.zul。如何从服务imp中提取数据。

这是控制器

package id.co.fifgroup.ims.controller;
import java.util.List;
import id.co.fifgroup.core.service.SecurityService;
import id.co.fifgroup.ims.domain.Violence;
import id.co.fifgroup.ims.service.ViolenceService;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.select.annotation.Wire;
import org.zkoss.zk.ui.select.annotation.WireVariable;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zkplus.spring.SpringUtil;
import org.zkoss.zul.ListModel;
import org.zkoss.zul.ListModelList;
import org.zkoss.zul.Window;
public class ViolenceInquiryComposer extends GenericForwardComposer<Component> {
@Wire
private Violence violence;
@Wire
private Window winViolenceInquiry;
@WireVariable(rewireOnActivate = true)
private transient ViolenceService violenceServiceImpl = (ViolenceService) SpringUtil.getBean("violenceServiceImpl");;
@Override
public void doAfterCompose(Component comp) throws Exception {
super.doAfterCompose(comp);
initParentViolence();
}
public ListModel<Violence> initParentViolence(){
Violence violence = new Violence();
return new ListModelList<Violence>(violenceServiceImpl.getViolence(1));
}
}

欢迎使用ZK框架

我可以看出你在这个框架方面没有太多经验,所以让我们开始吧
首先,ZK有3种不同的实现方式:

  • MVC,摇摆不定
  • MVC和Composers
  • MVVM

所以,第一件事是选择你想走的路
与此设置一样,看起来您想要使用Composers的MVC,所以让我们从这里开始:

@Wire
private Violence violence;

如果Violence没有扩展或实现任何ZK组件,那么这完全是错误的
@Wire代表将zul组件连接到此类

@Wire
private Window winViolenceInquiry;

这是正确的,只要您的窗口具有id="winViolenceInquiry"
你看,我在zul中有一个组件=>我用@Wire连接到这个类。

现在,zul中应该有一个特定的组件,比如网格、列表框或树
只要不将ListModelList应用于该组件,就不会发生任何事情
因此,第一步是在zul中声明组件
然后我们在java类中使用@Wire进行连接。作为最后一步,在doAfterCompose中,我们执行以下操作:

@Override
public void doAfterCompose(Component comp) throws Exception {
super.doAfterCompose(comp);
myList.setModel(initParentViolence());
}

不要忘记添加渲染器或在zul中使用模板标记,以便了解如何正确渲染。

现在一些高级点:

  1. 始终尝试将ListModelList作为全局最终变量
    原因很简单,只要你使用这个模型:更改是通过ajax调用完成的,而ajax调用中只有更改,设置一个新的ListModelList将删除所有渲染的项目,并再次附加所有新项目,因此ajax调用时间长,客户端pc渲染更重。

  2. 我建议您查看MVVM,因为这是一种非常简单快速的编码方式,而且学习曲线比MVC更快。

  3. 尝试使用SelectorComposer而不是GenericForwardComposer,因为最后一个是"旧"版本,您可能会在那里犯更多错误。SelectorComposer还支持CSS3选择器,以便连接您的组件。

最新更新