ZK8 Wizard Example - Part 1
From Documentation
Author
Robert Wenzel, Engineer, Potix Corporation
Robert Wenzel, Engineer, Potix Corporation
Date
July/August 2015
July/August 2015
Version
ZK 8.0
ZK 8.0
Introduction
NOT copy paste example uses Java 8 (recommendations welcome)
Highlight MVVM separation of Model and View keeping the state in the ViewModel (WizardModel) Focussing on the wizard pages and wizard data.
use the new template approach with zk-shadow-elements <sh:if> <sh:forEach> <sh:apply> <sh:choose>
next steps - integrate new form binding/validation - integrate a bootstrap layout without changing the UI
A reusable Wizard class/template
- zk.example.wizard.model.WizardViewModel.WizardViewModel
- zk.example.wizard.model.WizardStep
- /wizardexample/src/main/webapp/WEB-INF/zul/template/wizard/wizard.zul
Simple Usage (Survey)
- /wizardexample/src/main/webapp/simple.zul
- the start page using the simple wizard
<?component name="wizard" templateURI="/WEB-INF/zul/template/wizard/wizard.zul" ?> <zk> <div width="500px" viewModel="@id('vm') @init('zk.example.simplewizard.SimpleWizardViewModel')" validationMessages="@id('vmsgs')"> <wizard wizardModel="@init(vm.wizardModel)" survey="@init(vm.survey)"> <!-- injected template - visible inside the wizard --> <template name="yesno"> <radiogroup selectedItem="@bind(answer)"> <radio label="Yes" value="${true}"/> <radio label="No" value="${false}"/> </radiogroup> </template> </wizard> </div> </zk>
- /wizardexample/src/main/webapp/WEB-INF/zul/template/simplewizard/steps
More complex Usage (Order Wizard)
- Basket
- adjust basket (add/ remove/ change items)
- Shipping Address
- enter shipping address
- Payment
- choose payment method + enter conditional details
- Confirmation
- review data, accept GTC submit order (handle exceptions)
- Feedback
- user feedback when order was successful
Data Model
zk.example.order.api.Order
- Order
- Basket
- BasketItem (list of)
- Payment (payment method)
- CreditCard (based on payment method)
- or BackAccount (based on payment method)
- ShippingAddress (city, street, zip code)
- Basket
Form Row template
Additional features
Input Mask
Bookmarks Handling
Custom I18N
using the same convenience functions in the zul and java code
More complex Usage (Order Wizard)
Summary
bla bla
What's next?
Download
- The source code for this article can be found in github.
Running the Example
The example consists of a maven web application project. It can be launched with the following command:
mvn jetty:run
Then access the overview page http://localhost:8080/longoperations/overview.zul
And that's what you'll see:
Comments
Copyright © Potix Corporation. This article is licensed under GNU Free Documentation License. |