CHAPTER 1 The Essence of Grails
Creating Your First Application
Step 1: Creating the Application
Step 6: Running the Application
CHAPTER 2 Getting Started with Grails
Being Environmentally Friendly
Configuring a JNDI Data Source
CHAPTER 3 Understanding Domain Classes
Persisting Fields to the Database
Understanding Transient Properties
Customizing Your Database Mapping
Extending Classes with Inheritance
CHAPTER 4 Understanding Controllers
The Errors API and Controllers
Data Binding to Multiple Domain Objects
Data Binding with the bindData Method
Imposing HTTP Method Restrictions
Implementing an Imperative Solution
Taking Advantage of a Declarative Syntax
Reading the Request InputStream
Understanding the Default URL Mapping
Including Static Text in a URL Mapping
Removing the Controller and Action Names from the URL
Embedding Parameters in a Mapping
Specifying Additional Parameters
Applying Constraints to URL Mappings
Including Wildcards in a Mapping
Mapping to HTTP Request Methods
Taking Advantage of Reverse URL Mapping
Defining Multiple URL Mappings Classes
CHAPTER 7 Internationalization
Using URL Mappings for Internationalization
Using the message Tag for Parameterized Messages
Using Parameterized Messages for Validation
Executing Code Before and After a Call
A Note on Ajax and Performance
Flows, Serialization, and Flow Storage
Triggering Events from the View
Transition Actions and Form Validation
Subflows and Conversation Scope
Implementing the First View State
Data Binding and Validation in Action
Using Command Objects with Flows
Verifying Flow State with Assertions
Listing, Sorting, and Counting
Saving, Updating, and Deleting
Relationship Management Methods
Session Management and Flushing
Services and Dependency Injection
Environment-Specific Configuration
Understanding Grails' Build System
Parsing Command-Line Arguments
Bootstrapping Grails from the Command Line
Dependency Resolution with Ivy
Continuous Integration with Hudson
Adding Support to Your Favorite IDE
Integration with E-mail Servers
Interacting with the Scheduler
Application Versioning and Metadata
Populating the Database with BootStrap Classes
Supplying Application Artefacts
Dynamic Spring Beans Using Conventions
Using Metaprogramming to Enhance Behavior
Plugin Events and Application Reloading
Modifying the Generated WAR Descriptor
Packaging and Distributing a Grails Plugin
Plugins for Application Modularity
Batch Data Binding Vulnerability
Authentication and Authorization
Limiting Access Through URL Mappings
Content Negotiation with the ACCEPT Header
The ACCEPT Header and Older Browsers
Content Negotiation with the CONTENT_TYPE Header
Content Negotiation Using File Extensions
Content Negotiation with a Request Parameter
Content Negotiation and the View
Dependency Injection and Grails
Integrating JMS with Spring JMS
Mixing Groovy and Java with Spring
CHAPTER 17 Legacy Integration with Hibernate
Legacy Mapping with the ORM DSL
Changing Table and Column Name Mappings
Changing the Database Identity Generator