| introduction: |
| title: Introduction |
| howToSource: |
| title: How to use the example code |
| whyLearn: |
| title: Why should I learn Wicket? |
| whyLearn_1: We all like spaghetti :-) ... |
| whyLearn_2: Component oriented frameworks - an overview |
| whyLearn_3: Benefits of component oriented frameworks for web development |
| whyLearn_4: Wicket vs the other component oriented frameworks |
| helloWorld: |
| title: Wicket says “Hello world!” |
| helloWorld_1: Wicket distribution and modules |
| helloWorld_2: Configuration of Wicket applications |
| helloWorld_3: The HomePage class |
| helloWorld_4: Wicket Links |
| helloWorld_5: Summary |
| layout: |
| title: Wicket as page layout manager |
| layout_1: Header, footer, left menu, content, etc... |
| layout_2: Here comes the inheritance! |
| layout_3: Divide et impera! |
| layout_4: Markup inheritance with the wicket:extend tag |
| layout_5: Summary |
| keepControl: |
| title: Keeping control over HTML |
| keepControl_1: Hiding or disabling a component |
| keepControl_2: Modifing tag attributes |
| keepControl_3: Generating tag attribute 'id' |
| keepControl_4: Creating in-line panels with WebMarkupContainer |
| keepControl_5: Working with markup fragments |
| keepControl_6: Adding header contents to the final page |
| keepControl_7: Using stub markup in our pages/panels |
| keepControl_8: How to render component body only |
| keepControl_9: Hiding decorating elements with the wicket:enclosure tag |
| keepControl_10: Surrounding existing markup with Border |
| keepControl_11: Summary |
| componentLifecycle: |
| title: Components lifecycle |
| componentLifecycle_1: Lifecycle stages of a component |
| componentLifecycle_2: Hook methods for component lifecycle |
| componentLifecycle_3: Initialization stage |
| componentLifecycle_4: Rendering stage |
| componentLifecycle_5: Removing stage |
| componentLifecycle_6: Summary |
| versioningCaching: |
| title: Page versioning and caching |
| versioningCaching_1: Stateful pages vs stateless |
| versioningCaching_2: Stateful pages |
| versioningCaching_3: Stateless pages |
| versioningCaching_4: Summary |
| requestProcessing: |
| title: Under the hood of the request processing |
| requestProcessing_1: Class Application and request processing |
| requestProcessing_2: Request and Response classes |
| requestProcessing_3: The “director” of request processing - RequestCycle |
| requestProcessing_4: Session Class |
| requestProcessing_5: Exception handling |
| requestProcessing_6: Summary |
| urls: |
| title: Wicket Links and URL generation |
| urls_1: PageParameters |
| urls_2: Bookmarkable links |
| urls_3: Automatically creating bookmarkable links with tag wicket:link |
| urls_4: External links |
| urls_5: Stateless links |
| urls_6: Generating structured and clear URLs |
| urls_7: Summary |
| modelsforms: |
| title: Wicket models and forms |
| modelsforms_1: What is a model? |
| modelsforms_2: IModel and Lambda |
| modelsforms_3: Models and JavaBeans |
| modelsforms_4: Wicket forms |
| modelsforms_5: Component DropDownChoice |
| modelsforms_6: Model chaining |
| modelsforms_7: Detachable models |
| modelsforms_8: Using more than one model in a component |
| modelsforms_9: Use models! |
| modelsforms_10: Summary |
| forms2: |
| title: Wicket forms in detail |
| forms2_1: Default form processing |
| forms2_2: Form validation and feedback messages |
| forms2_3: Input value conversion |
| forms2_4: Validation with JSR 303 |
| forms2_5: Submit form with an IFormSubmittingComponent |
| forms2_6: Nested forms |
| forms2_7: Multi-line text input |
| forms2_8: File upload |
| forms2_9: Creating complex form components with FormComponentPanel |
| forms2_10: Stateless form |
| forms2_11: Working with radio buttons and checkboxes |
| forms2_12: Selecting multiple values with ListMultipleChoices and Palette |
| forms2_13: Summary |
| repeaters: |
| title: Displaying multiple items with repeaters |
| repeaters_1: The RepeatingView Component |
| repeaters_2: The ListView Component |
| repeaters_3: The RefreshingView Component |
| repeaters_4: Pageable repeaters |
| repeaters_5: Summary |
| componentQueueing: |
| title: Component queueing |
| componentQueueing_1: Markup hierarchy and code |
| componentQueueing_2: Improved auto components |
| componentQueueing_3: When are components dequeued? |
| componentQueueing_4: Restrictions of queueing |
| componentQueueing_5: Summary |
| i18n: |
| title: Internationalization with Wicket |
| i18n_1: Localization |
| i18n_2: Localization in Wicket |
| i18n_3: Bundles lookup algorithm |
| i18n_4: Localization of component's choices |
| i18n_5: Internationalization and Models |
| i18n_6: Summary |
| resources: |
| title: Resource management with Wicket |
| resources_1: Static vs dynamic resources |
| resources_2: Resource references |
| resources_3: Package resources |
| resources_4: Adding resources to page header section |
| resources_5: Context-relative resources |
| resources_6: Resource dependencies |
| resources_7: Aggregate multiple resources with resource bundles |
| resources_8: Put JavaScript inside page body |
| resources_9: Header contributors positioning |
| resources_10: Custom resources |
| resources_11: Mounting resources |
| resources_12: Shared resources |
| resources_13: Customizing resource loading |
| resources_14: CssHeaderItem and JavaScriptHeaderItem compression |
| resources_15: NIO resources |
| resources_16: Resourcen derived through models |
| resources_17: Summary |
| jsintegration: |
| title: An example of integration with JavaScript |
| jsintegration_1: What we want to do... |
| jsintegration_2: ...and how we will do it |
| jsintegration_3: Summary |
| advanced: |
| title: Wicket advanced topics |
| advanced_1: Enriching components with behaviors |
| advanced_2: Generating callback URLs with IRequestListener |
| advanced_3: Initializers |
| advanced_4: Using JMX with Wicket |
| advanced_5: Generating HTML markup from code |
| advanced_6: Summary |
| ajax: |
| title: Working with AJAX |
| ajax_1: How to use AJAX components and behaviors |
| ajax_2: Build-in AJAX components |
| ajax_3: Built-in AJAX behaviors |
| ajax_4: Using an activity indicator |
| ajax_5: AJAX request attributes and call listeners |
| ajax_6: Creating custom AJAX call listener |
| ajax_7: Stateless AJAX components/behaviors |
| ajax_8: Summary |
| jee: |
| title: Integration with enterprise containers |
| jee_1: Integrating Wicket with EJB |
| jee_2: Integrating Wicket with Spring |
| jee_3: JSR-330 annotations |
| jee_4: Summary |
| nativewebsockets: |
| title: Native WebSockets |
| nativewebsockets_1: How does it work ? |
| nativewebsockets_2: How to use |
| nativewebsockets_3: Client-side APIs |
| nativewebsockets_4: Testing |
| nativewebsockets_5: Differences with Wicket-Atmosphere module. |
| nativewebsockets_6: FAQ |
| security: |
| title: Security with Wicket |
| security_1: Authentication |
| security_2: Authorizations |
| security_3: Using HTTPS protocol |
| security_4: URLs encryption in detail |
| security_5: Package Resource Guard |
| security_6: Summary |
| testing: |
| title: Test Driven Development with Wicket |
| testing_1: Utility class WicketTester |
| testing_2: Testing Wicket forms |
| testing_3: Testing markup with TagTester |
| testing_4: Summary |
| testingspring: |
| title: Test Driven Development with Wicket and Spring |
| testingspring_1: Configuration of the runtime environment |
| testingspring_2: Configuration of the JUnit based integration test environment |
| testingspring_3: Summary |
| bestpractices: |
| title: Wicket Best Practices |
| bestpractices_1: Encapsulate components correctly |
| bestpractices_2: Put models and page data in fields |
| bestpractices_3: Correct naming for Wicket IDs |
| bestpractices_4: Avoid changes at the component tree |
| bestpractices_5: Implement visibilities of components correctly |
| bestpractices_6: Always use models |
| bestpractices_7: Do not unwrap models within the constructor hierarchy |
| bestpractices_8: Pass models extended components |
| bestpractices_9: Validators must not change any data or models |
| bestpractices_10: Do not pass components to constructors |
| bestpractices_11: Use the Wicket session only for global data |
| bestpractices_12: Do not use factories for components |
| bestpractices_13: Every page and component must be tested |
| bestpractices_14: Avoid interactions with other servlet filters |
| bestpractices_15: Cut small classes and methods |
| bestpractices_16: The argument "Bad documentation" |
| bestpractices_17: Summary |
| internals: |
| title: Wicket Internals |
| pagestoring: Page storing |
| autocomponents: Markup parsing and Autocomponents |
| lambdas: |
| title: Lambda Expressions |
| http2push: |
| title: Wicket HTTP/2 Support (Experimental) |
| http2push_1: Example Usage |
| http2push_2: Create server specific http/2 push support |
| monitoring: |
| title: Wicket Metrics Monitoring (Experimental) |
| monitoring_1: Example setup |
| monitoring_2: Visualization with Graphite |
| monitoring_3: Measured data |
| monitoring_4: Write own measurements |
| maven: |
| title: Working with Maven (Appendix) |
| maven_1: Switching Wicket to DEPLOYMENT mode |
| maven_2: Creating a Wicket project from scratch and importing it into our favourite IDE |
| wicketstuff: |
| title: Project WicketStuff (Appendix) |
| wicketstuff_1: What is project WicketStuff |
| wicketstuff_2: Module tinymce |
| wicketstuff_3: Module wicketstuff-gmap3 |
| wicketstuff_4: Module wicketstuff-googlecharts |
| wicketstuff_5: Module wicketstuff-inmethod-grid |
| wicketstuff_6: Module wicketstuff-rest-annotations |
| wicketstuff_7: Module stateless |
| redirects: |
| title: Lost In Redirection With Apache Wicket (Appendix) |
| contributing: |
| title: Contributing to this guide (Appendix) |
| |