los servicios son nulos en el controlador de primavera + ZK

Estoy tratando de integrar zk con Spring, pero de alguna manera no puedo hacer instancias de Spring para esos objetos de servicio/administración: S

Controlador, Tipo de producto controlador:

    @Controller
    public class ProductTypeController extends SelectorComposer {

        @Resource
        private ProductTypeService productTypeService;

        @Listen("onCreate = listbox#typeList")
        public void loadAll() {
            BindingListModelList model = new BindingListModelList(productTypeService.getAll(), false);
            typeList.setItemRenderer(new ProductTypeListRenderer());
            typeList.setModel(model);   
        }

       public void loadAll2(Listbox lb){
         List lista = productTypeService.getAll();
        BindingListModelList model = new BindingListModelList(lista, false);
        lb.setItemRenderer(new ProductTypeListRenderer());
        lb.setModel(model);              
    }

    }

el Zul

<?variable-resolver class="org.zkoss.zkplus.spring.DelegatingVariableResolver"?>
<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" ?>
<zk>
    <hlayout>
    <div id="winDiv" apply="com.iknition.micutecake.controller.ProductTypeController">
        <vbox>
            <listbox id="typeList" width="450px" height="300px" >
                <listhead>
                    <listheader width="50px" label="id" sort="auto(id)" />
                    <listheader width="250px" label="name" sort="auto(name)" />
                    <listheader width="140px" label="description" sort="auto(description)" />
                </listhead>
            </listbox>
        </vbox>
    </div>
        </hlayout>
</zk>

Obtengo NullPointerException porque productTypeServivce es nulo.

sin embargo, si agrego onCreate="loadAll2(self);" a la línea del cuadro de lista en .zul, entonces llamará al método loadAll2(Listbox lb) de esa manera, productTypeService no es nulo y todo funciona bien.

¿Alguna idea de por qué? o como hacer que funcione?

preguntado el 12 de junio de 12 a las 17:06

1 Respuestas

Encontré la respuesta.

Solo hay que reemplazar

<div id="winDiv" apply="com.iknition.micutecake.controller.ProductTypeController">

con

<div id="winDiv" apply="${productTypeController}">

entonces zk usará spring resolver para resolver el controlador

Respondido el 12 de junio de 12 a las 22:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.