gpt4 book ai didi

zk - 使用 zkoss,为什么我的 Spring DAO 仍然为空,即使我已经在 Spring config XML 中设置了它?

转载 作者:行者123 更新时间:2023-12-04 05:27:44 24 4
gpt4 key购买 nike

我正在使用 ZK 尝试从现有的 spring JAR 项目中调用 Spring Manager/DAO。我已经在 zul 文件中使用了这个变量解析器:

<?variable-resolver class="org.zkoss.zkplus.spring.DelegatingVariableResolver"?>
<zk>
<window border="normal" width="400px" style="padding-top:20px;padding-left:20px;" title="Species Editor" apply="org.openforis.specieseditor.NewSpecies">

并且能够调用Java类 NewSpecies.java这边走 :
    SpeciesManager speciesManager = (SpeciesManager) SpringUtil.getBean("speciesManager");      
List<TaxonOccurrence> speciesList = speciesManager.findByScientificName(taxonomy, species, 1);

问题是,在这个 SpeciesManager.java有对其他 DAO 的调用,例如 taxonDao ,这会创建一个 Null Pointer Exception .我真的不知道这个异常是如何发生的。有什么帮助吗?我已经添加了 taxonDao在我的spring config xml里面也是。

最佳答案

你有 apply="org.openforis.specieseditor.NewSpecies"在您的根组件上,这意味着 ZK 将实例化您的 Composer 实例,然后 Spring 没有机会注入(inject)依赖项,因为 Composer 在这里不是 Spring 托管的 bean。您可以通过从 SelectorComposer 和 VariableResolver 注释扩展来在您的 Composer 中注入(inject) Spring 依赖项,如下所示

@VariableResolver(org.zkoss.zkplus.spring.DelegatingVariableResolver.class)
public class RegistrationSpringComposer extends SelectorComposer<Component> {

@WireVariable
private RegistrationDao registrationDao;

@Listen("onClick = #submitButton")
public void submit(){
// omit irrelevant code for brevity
registrationDao.add(newUser);
}
}

或者
您可以将当前的 NewSpecies进入 Spring 托管 bean 并使用 EL 表达式,如 apply="${newSpecies}"让 Spring 处理 NewSpecies bean 的生命周期(注意:确保 NewSpecies 具有原型(prototype)范围)

关于zk - 使用 zkoss,为什么我的 Spring DAO 仍然为空,即使我已经在 Spring config XML 中设置了它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13006164/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com