Introduccion a ZK

Bueno pues esta es una guia rapida pa crear aplicaciones RIA con un framework que ando analizando pa un proyecto je.

1) pagina oficial, aqui encontraran el lugar para descargarlo y documentacion al respecto
2) Ir al sitio de downloads y descargan los jars.
3) Agregan a su proyecto /lib/*.jar, /lib/ext/*.jar y /lib/zkforge/*-jar
4)Teniendo esto, agregamos las siguientes lineas a nuestro web.xml

[code]

Used to clean up when a session is destroyed
ZK Session Cleaner
org.zkoss.zk.ui.http.HttpSessionListener

ZK loader for ZUML pages
zkLoader
org.zkoss.zk.ui.http.DHtmlLayoutServlet

update-uri /zkau

1

zkLoader
*.zul

zkLoader
*.zhtml

The asynchronous update engine for ZK
auEngine
org.zkoss.zk.au.http.DHtmlUpdateServlet

auEngine
/zkau/*

index.zul

[/code]

5) Generamos un bean con unas cuantas propiedades
[code]
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package com.jali.ria.zk.beans;

/**
*
* @author jali
*/
public class Empleado {
private String nombre;
private int edad;
private String direccion;
private String ubicacion;

public Empleado(){}
public Empleado(String nombre, int edad, String direccion, String ubicacion){
this.nombre = nombre;
this.edad = edad;
this.direccion = direccion;
this.ubicacion = ubicacion;
}
//Omiti los getter/ setters para ahorrar espacio :P

}
[/code]
6) Ya tenemos laparte complicada jajajaja. Ahora nadamas generamos un controlador para nuestros empleados
[code]
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.jali.ria.zk.ui;

import java.util.ArrayList;
import java.util.List;

import com.jali.ria.zk.beans.Empleado;

import org.zkoss.zul.Intbox;
import org.zkoss.zul.Listbox;
import org.zkoss.zul.Textbox;
import org.zkoss.zul.Window;

/**
*
* @author jali
*/
public class EmpleadoController extends Window {

List listaEmpleados = new ArrayList();

public EmpleadoController() {
listaEmpleados.add(new Empleado("Jali", 25, "retorno 1 sur 20", "Mexico DF"));
listaEmpleados.add(new Empleado("Iberck", 26, "nva atzacoalcos", "Establo de Mexico"));
listaEmpleados.add(new Empleado("Bnk", 100, "queretaro queretaro", "Creo que queretaro xD"));
}

public void refrescarUI() {
Listbox lb = (Listbox) getFellow("lb");
Empleado empleado = (Empleado) lb.getSelectedItem().getValue();
((Textbox)getFellow("nombre")).setValue(empleado.getNombre());
((Intbox)getFellow("edad")).setValue(empleado.getEdad());los archivos fuente
((Textbox)getFellow("direccion")).setValue(empleado.getDireccion());
((Textbox)getFellow("ubicacion")).setValue(empleado.getUbicacion());
}
public List getListaEmpleados(){
return listaEmpleados;
}
public void setEmpleados(List listaEmpleados){
this.listaEmpleados =listaEmpleados;
}
}

[/code]

7) La parte engorrosa del asunto es que tiene sintaxis propia de html o bueno... la extension de los archivos es .zul

[code]

Name:
Description:
Latitude:
Longitude:

[/code]

Click aca pa ver la pantalla

Saludos banda

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

Gracias por la info

Ya había visto demos de ZK pero la verdad no me había metido a ver cómo se programa. Pensé que iba a ser algo de puro UI y que podías usar cualquier framework para tu aplicación, pero veo que no es así, es algo completo.

Me parece muy engorroso tener que hacer código en la aplicación para copiar datos del bean empleado a los elementos de la página (todo eso de  ). En Tapestry le pones a un textfield que su valor es por ejemplo empleado.nombre y se encarga de buscar en tu controlador una propiedad o variable de instancia que se llame empleado, la obtiene y le pide la propiedad nombre y eso es lo que usa para desplegar el valor; para un submit, obtiene el empleado y busca el setNombre y le modifica el valor, ahorrándote ese código. Sería bueno después tener un ejemplo completo pero en Tapestry, luego si tengo tiempo hago esto mismo pero en T5 para comparar no solamente la cantidad de código y XML/HTML sino la comprensibilidad del código y ver qué tanto hace el framework por nosotros.

Given the choice of dancing pigs and security, users will choose dancing pigs, every single time. - Steve Riley

Imagen de jali

gracias

Estaria bien checar tapestry. la verdad unicamente lo vi de rapido jeje. Pero ps lo checo y ahi luego te digo que tal.

Saludos

hola!

muy buen tutorial, directo y simple como me gustan... yo tambien ando evaluando este framework

sobre los controladores, en ZK tambien se puede utilizar EL (Expression Language) y hacer bindings al estilo JSF, por ejmplo
#{controller.empleado.nombre}, algo de eso vi en uno de los tutoriales..

saludos

Imagen de iberck

ZK Interesante

Se ve interesante el framework este ZK, he visto mucho movimiento en los últimos meses del framework pero no me he podido meter a fondo a revizarlo

Gracias por la reseña jali

JavaRanch big moose saloon member

Gracias!!!

Con tan sencillo y útil post me has ayudado enormemente con un proyecto en ejecución al cual no había podido implementarle al 100% MVC ya que las librerías con las que cuento no me permitían implementar los métodos que conozco y los muchos que había averiguado para hacerlo. Se me había hecho complicado conseguir una librería que se adaptara a lo que necesito ya que uso Hibernate y si funcionaba una cosa no funcionaba otra, así que de verdad GRACIAS!!! Para terminar de aprovechar la oportunidad tendrás algún código como el actual que incluya el manejo de eventos tales como el click de los botones?De ser así me ayudarías aún más. Gracias!!