Java zk层次结构获取数据库

标签 java zk

我在获取数据以查看树时遇到问题,首先我从服务 impl 获取数据,并且 View 中有 .zul,如何从服务 imp 获取数据到 View 中的 .zul。

这是 Controller

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,以 Swing 方式。
  • MVC,带有 Composer 。
  • MVVM。

所以,首先要选择你想要走的路。
与此设置一样,看起来您想要带有 Composer 的 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调用完成的,只有更改,设置一个新的ListModelList将删除所有渲染的项目并再次追加所有新项目,所以只要ajax调用和客户端电脑渲染较重。

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

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

关于Java zk层次结构获取数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37384356/

相关文章:

java - "provides"方法或注入(inject)类上的 Dagger 2 范围注释

java - Java 中的哈希表和同步

java - ContextThemeWrapper 在 android 中更改样式

java - ZK 7.X中如何订阅KeyEvent

html - 在标签中使用 Html 实体

java - 如何通过ajax调用servlet加载一个值,servlet返回什么到html tabel rowcell

java - ZK - 将用户重定向回上一页

mvvm - ZK MVVM : Passing parameter to another viewmodel using <include>

java - ZK中如何让按钮看起来像链接

java - Titan图遍历查询中的P.test(V value)是如何工作的?