Index


 
Symbols
 
# 219, 221, 236
     application 219
     attr 219
     parameters 219
     request 219
     session 219
     uses 223
     Velocity directives 262
$! 261
%{...} 234
 
A
 
absolute path 41
$action 266
action
     alias 42, 354
     aliasing without configuration 44
     architecture 427 - 428
     chaining 120
     configuring 40 - 46
     CRUD See CRUD
     customizing 44 - 46
     long running 125
     ModelDriven 95
     ModelDriven, implementing 96
     parameters 44 - 46
     responsibility 39
     unit testing 389
     validating 124
     validating multiple action aliases 339
     without type conversion 315 - 317
action alias 42, 354
     validating multiple 339
action aliasing. See action, alias
action chain
     configuring 193 - 194
action chaining 120, 185, 192, 197, 427
     how it works 194 - 197
action errors 124
Action interface 78 - 79, 427
action mapping, setup 40
action tag 240 - 242
     attributes 240
Action, interface 78
Action.INPUT 337
Action.SUCCESS 337
ActionChainResult 429
ActionContext 142, 153, 213
     actively requesting 142 - 143
     architecture 432 - 436
     passively requesting 143 - 144
     Registry pattern 142
     relation to OGNL context 218 - 219
     relationship to ActionInvocation 433
     relationship to ActionProxy 432
     using with testing 392
ActionContextThreadLocal 436
actionErrors 85
ActionInvocation 130
     architecture 430 - 432
     relationship to ActionContext 432
     relationship to ActionProxy 430
ActionInvocation property 434
ActionProxy 436
     architecture 430 - 432
     relationship to ActionContext 432
     relationship to ActionInvocation 430
     using for integration testing 394
ActionProxyFactory 431, 436
     internal workings 431
ActionSupport 80
     architecture 428
     field errors with UI tags 282
     helloWorld 34 - 36
     interaction with UI tags 36
     interfaces 80
     locale support 86
     ModelDriven 95
     uses for error reporting 283
     Validateable 124
     validation 338
ActionValidatorManager 399
add 216
addActionError() 352
addFieldError() 34, 352
     See also validation
alias. See action, alias
altSyntax 234, 291
     See also UI tag library
Ant 385
AOP. See Aspect-Oriented Programming (AOP)
application attributes 219
application layout 70
application scope 151, 236
     configuration 151
     HibernateSessionFactory 169
ApplicationAware 115, 121 - 122, 147
ApplicationLifecycleListener 152
around interceptor 117 - 118
     AroundInterceptor 117, 129 - 130
     when not to use 130
array index notation 225
Aspect-Oriented Programming (AOP) 95, 428
assignment 217
attribute map 153
attributes 219
authentication 130
authentication interceptor 130
autoboxing 221
automatic instantiation 92
Avalon 146, 171
Aware interface 147 - 148, 153 - 154
     CaveatEmptor example 169
     example 157
     testing with 391
     using 157
 
B
 
bean tag 231, 238
     attributes 239
     creating a JavaBean 238
beforeResult 133
BigDecimal 216
BigInteger 216
Boolean 216
 
C
 
calendar
     creating with UI tags 403
     custom tag 407
calendar.vm 406
cat, skinning 173
Caucho 386
CaveatEmptor
     authentication interceptor 130 - 131
     Aware interface 169
     CreateUser 315, 330, 334
         CreateUsers 327
     CreateUser-validation.xml 340
     EditCategory 78
         editCategory 419 - 420
     EditCategory CRUD action 417
     EmailConverter 321
     i18n functionality 361
     Inversion of Control 162 - 170
     LocalizedTextDAO 377
     mock objects 390
     newCategory 418 - 419
     pagination 248
     PagingAction 378
     parentCategory 422
     saveCategory 420 - 421
     search wait page 414
     update profile 272
     UpdateUser, integration testing 393
     usage of action tag 240
     User 334
     UserAware interface 133
     viewCategory 419 - 420
chain interceptor 115, 196
     stack 127
chain result 192 - 197
     common properties 196
     expression evaluation 196
     how it works 194 - 197
     parameters 193
     required interceptor 194
     value stack behavior 196
chaining interceptor 120
chaining, Command pattern 427
chainStack 127
Char 216
character encoding.
     See encoding
checkbox 276, 280
checkbox tag 298 - 299
     attribute 299
checkboxlist tag 302
     attributes 303
circular dependency 160
     loose 160
     tight 160
classpath
     configuration 71
code smell 197
Collection
     automatic type conversion 325
     i18n type conversion text 372
     null access 326 - 329
     UI tags 299 - 305
collection 220 - 224
     projection across 429
Collection_ syntax 328
combobox tag 308
     attributes 308
Command pattern 42, 78, 425 - 427
     advanced features 427
     basic features 426 - 427
commons-logging.jar 20
compile-time, template language 256 - 257
completeStack 127, 345
component
     CaveatEmptor configuration 168 - 169
     creating 154 - 158
     interface
         implementation 155
     interfaces 154
     tag 309, 406
component interceptor 115, 120, 154
     stack 126
component interface
     creating 154 - 156
ComponentManager
     applying to an action 153
     applying to any object 158 - 159
     getting access to 158
     introduction 153
components.xml 154
     example 157 - 158
componentStack 126
ComponentTag 407
     extending 407
config browser 396 - 398
configuration
     Command pattern 426
     file upload 110
     IoC 151 - 154
     reloading 69, 388
     resetting for unit tests 392
     setting configuration parameters 120
     testing 393 - 396
ConfigurationManager 392
container 144
ContainUtil 303
content type, getting for uploaded files 123
context 213
     included 184
     JSP 184
     normal 184, 186
control tag 242 - 246
controlfooter.vm 285
     contents 288
     overriding 404, 408
controlheader.vm 285, 404
     contents 286
conversion validator 344
conversion.properties 388
ConversionError
     property 434
conversionError 337
     interceptor 115, 126, 329, 344
converting data
     from String 317
     to String 317
counter 239
CreateLocalizedCategory 363
CreateUser
     i18n 89
     validation 81, 89
cross-cutting 428
CRUD 42, 417 - 423
     create 418 - 419
     definition 417
     read 419 - 420
     update 419 - 421
     using with type conversion 422
CSS 272
     UI tag class 292
     UI tag elements 282
custom template
     creating 406 - 407
 
D
 
data access
     deep 317, 324
     flat 317
data binding 90 - 95
data tag 235, 242
date format 239 - 240, 315, 318, 325, 370
date validator 350
DateFormatter. See date format
DebugResult 182
decoupling 141 - 142
decrement 216
deep data access 317, 324
default
     results 181
     scope 236
     view 44
     workflow 123 - 124
default configuration. See webwork-default.xml
DEFAULT_PARAM 183
DefaultActionProxy 431
DefaultComponentManager 153
defaultMessage 342
defaultStack 126
DefaultTypeConverter 321
DefaultWorkflowInterceptor 82, 123 - 124, 337
DelegatingValidatorContext 402
dependency 148 - 149
     circular 160
     complex example 159 - 162
     lower-scope 161
     scope 161 - 162
Dependency Injection pattern. See Inversion of Control
dependency management.
     See Inversion of Control
depth-first search 159
DFS. See depth-first search
directive 262
dispatch result, avoiding during testing 395
dispatcher result 181, 183
     configuring 183
     context 184 - 187
     difference from redirect 190
     error cases 187 - 188
     illustration 183
     type 47
dispatching
     compared to action chaining 193
     to a page 182 - 188
Disposable 164, 168
dispose() 150
dispose. See lifecycle
disposing 149, 171
divide 216
domain object 90
     advantages 93
     considerations 93
     direct access 91
     issues 93
     security 94
doMethod 43
Double 216
doubleList 306
doubleListKey 306
doubleListValue 306
doubleName 306
doubleselect tag 306 - 307
     attributes 306
doubleValue 306
duplicate
     forms. See token
     posts 410
     submits 116
dynamic proxy 95
 
E
 
EasyMock 389
EJB 171
     IoC examples 144
EL. See expression language
else directive 265
else tag 245 - 246
elseif directive 265
elseif tag 245
     attribute 245
email validator 343
emptyOption 300 - 301, 307
enabler interface 157
encapsulation 404
encode attribute 249
encoding 381 - 382
     IDE 382
environment, setting up 385 - 388
equality 216
error mapping 182
error message 427
     helloWorld 31
errors, displaying with UI tags 280 - 282
escaping HTML 235
Excel, generating with JasperReports 203
exception
     declaring 79
     interceptor 133
exception handling 79
ExceptionInterceptor 133
execAndWait 125, 414
     Making interceptor 116, 413 - 416
     ordering 416
     stack 127
execAndWait interceptor 413
execute() 42 - 43, 145, 178, 348, 398, 427
     result 429
     validating 336 - 337
executeAndWaitStack 127
expect* 391
expression language
     advanced features 224 - 228
     advantages 210
     compared to JSP 211
     features 213 - 219
     OGNL compared to Velocity 260
     reasons for using 210 - 211
     using with WebWork. See Object Graph Navigation Language
expression validator 344, 355 - 356
     example 355
ExpressionValidator. See expression validator
extendibility 404
 
F
 
Factory pattern 141 - 142, 172
     example 141
field errors 85, 124
     accessing with OGNL 35
field validator 352
fieldexpression validator 344, 355
fieldName 342
FieldValidatorSupport 352
fieldValue 299
file upload 111
     automating 109
     configuration 110
     content-type 110
     example 109
     interceptor 109, 123
     limiting size 69
     max size 110
     parser 69, 110
     save directory 69
     stack 126
     temproary directory 110
filename, getting for uploaded files 123
fileUpload 109
     FileUploadInterceptor 109
     interceptor 115
fileUploadStack 126
filter 152
     GZIP 136
flat data access 317, 323
flow, helloWorld 33
for attribute
     automatic element linking 293
     linking elements to labels 288
foreach 261 - 264
     compared to JSP iterator tag 263
     emulating iterator tag 263
form tag 280, 295 - 297
     attributes 295
     reasons for using 296
form token 409 - 413
form, preventing duplicate submissions 409 - 413
form.vm 295
format.date 370
format.money 370
formatting
     dates 370
     numbers 370
FormBean 93, 95
form-close.vm 295
forward, compared to include 187
Fowler, Martin 143
FreeMarker 202 - 203, 283
     configuration 202
     directives 202
     download 202
     example 202 - 203
     JSP tag support 269
     libraries 72
     parameters 202
     result 429
     switching from Velocity 203
freemarker result
     configuration 202
     parameters 202
 
G
 
generics 326
GET 217, 226
get() 158, 434
getActionInvocation() 434
getApplication() 434
getAttribute() 153
getContext() 434, 436
getConversionErrors() 434
getFieldErrors() 35
     relationship to UI tags 282
getInstance() 140
getKeys() 377
getLocale() 375, 434
getLocaleForTexts() 378
getMessage() 351
getModel 125
getModel() 125, 135, 364
getName() 434
getParameters() 434
getSession() 434
getSessionFactory() 165
getter 214
getText() 89, 366, 368, 375
     using for i18n 369
getValueStack() 434
global result 47
Google 90
Groovlet 213
Groovy 213
GZIP filter 136
 
H
 
handleGetObject() 377
handleInvalidToken() 412
handleValidToken() 412
hasNextPage() 381
headerKey 300 - 301, 306
headerValue 300 - 301, 307
Hibernate Query Language (HQL) 210
Hibernate, session management with IoC 162
HibernateSessionFactory 163 - 166, 168
     lifecycle 165
HibernateSessionFactoryAware 168
hidden tag 306
HQL. See Hibernate Query Language (HQL)
HTML
     data types 314
     JasperReports 204
HTTP
     data types 314
http 249
https 249
HttpServletRequest 142 - 143, 315, 390
HttpServletResponse 390
HttpSession 153
HttpSessionAttributeListener 144
HttpSessionListener 144
 
I
 
i18n 86
     alternative language support 89
     default encoding 69
     default locale 69, 86
     default resources 70
i18n tag 250 - 251, 366 - 367
     attribute 251
i18n.properties 370
I18nInterceptor 374
id attribute 293
IDE, setting up 386 - 388
if directive 265
if tag 245 - 246
     attribute 245
     helloWorld 32
in 217
include
     compared to forward 187
     merge behavior 58
include tag 246 - 247
     attribute 246
     compared to jsp
         include 247
includeContext attribute 249
includeParams attribute 249
increment 216
inequality 217
init() 150
Initializable 164, 168
initialization, lazy 159
initialize. See lifecycle
initializeObject() 158
initializing 149, 171
initialValue() 436
input field 276
input mapping 182
input widget, WebWork support 33
int validator 216, 343, 349 - 350
     example 349
integration test 393 - 398
interceptor 194
     after() 118
     architecture 428
     around interceptor 117 - 118
     bad design 128
     base interceptor class 117 - 118
     before() 118
     building 128 - 136
     call sequence diagram 113
     calling 113
     chaining 120
     Command pattern 427
     comparison to servlet filters 135
     component interceptor 120
     configuration params 120
     default stacks 126 - 128
     default workflow 123 - 124, 135
     defaults 114 - 125
     exception interceptor 133
     execAndWait 125
     file upload 123
     interceptor interactions 134 - 135
     logging interceptor 118
     maintaining state before and after action execution 130
     model driven 125, 134
     modularizing code by creating 128
     order 93, 134
     ordering 119
     parameter 134
     parameter interceptor 119 - 120
     prepackaged 126 - 128
     prepare 124, 135
     references 114
     responsibility 40
     servlet config 121 - 122
     setting request-specific parameters 426
     short-circuiting further execution 113
     stack 40
     stacks, webwork.xml 64
     stateless nature 128
     static-params 120
     timer interceptor 117
     token 125
     token session 125
     utility interceptors 115, 117 - 119
     validation 124
     webwork-default.xml 63
     workflow interceptors 116, 123 - 125
interceptor interactions 134 - 135
interceptor stack 126 - 128
     chainStack 127
     completeStack 127
     componentStack 126
     defaultStack 126
     execAndWaitStack 127
     fileUploadStack 126
     modelDrivenStack 127
interceptor stack (continued)
     prebuilt interceptor stack order 134 - 135
     validationWorkflowStack 126
interceptor, example custom interceptor 130 - 133
interceptor, property setting interceptors 115, 119 - 123
interface, aware 147 - 148
intermediary object 90
internationalization 240, 250
     Command pattern 427
     dates and numbers 370
     default texts 366
     dynamic resource bundles 375 - 378
     dynamically generated text 378 - 381
     example 361 - 362
     message formatting 368
     messages 86 - 90, 368 - 372
     messages in other languages 89
     parameterizing texts 368 - 369
     search order 364 - 366
     setting the locale 373 - 375
     tips and tricks 373
     using with type conversion 371 - 372
     using with validators 370 - 371
     validation messages 341
     working with type conversion 325
internationalized message 368 - 372
invalid field number, using with Collections 372
invalid field value 371
     default text 372
Inversion of Control 126
     active vs. passive 142 - 144
     advantages of testing 391
     alternatives to WebWork 170 - 173
     common mistakes 154
     compared to statics 139
     configuration 120, 151 - 154
     essentials 146 - 151
     framework 151 - 162
     J2EE 144
     lifecycle 149 - 150
     Non-IoC alternatives 172 - 173
     pattern 138 - 146
     scope 150 - 151
     scope and lifecycle diagram 150
     testing 138, 145 - 146
     types 170
     WebWork history 146 - 148
     wiring 146
IoC. See Inversion of Control
iterator tag
     attributes 242
     compared to Velocity foreach 263
     counting loops. See IteratorStatus
IteratorStatus 243, 246
 
J
 
J2EE, IoC 144
jasper result
     configuration 204
     parameters 204
JasperReports 203 - 207
     compared to HTML report 204
     compiling reports 206
     configuration 204
     download 204
     example 204 - 207
     libraries 72
     parameters 207
     report formats 204
     result 429
Java 1.5 326
Java Collections API. See collection
JavaBean 90 - 91
     accessing properties with OGNL 214 - 215
     creating with the bean tag 238
     null property access 326
     querying with OGNL 210
JavaScript
     client-side validation 296
     scripting with the UI tags 290, 293
javax.jms.Queue 390
Jive Software 258
JNDI, application testing 391
jsession 249
JSP 283
     context 184
     placing temporary variables in 236
     token tag 125
     using with Velocity 198 - 199
JSP Standard Tag Library (JSTL) 212 - 213
<jsp:include> 246
jsp:include 186
 
L
 
label 292
     linking to form elements 288
     position 292
     tag 305
lambda expression 228, 429
language-specific text 250
lazy initialization 159
libraries
     optional 72
     required 71
lifecycle 144, 149 - 151
     dispose 164
     example 156
     initialize 164
     See also Inversion of Control
List
     automatic type conversion 325
     list 220 - 221
         construction 220
     null access 328
listener 152
listKey 299, 306
ListResourceBundle 362
listValue 300, 306
locale
     browser 361
     setting programmatically 373 - 375
Locale property 434
LocaleProvider 80, 86
localized message text 86 - 90
LocalizedMessages 363, 377
     used with i18n tag 367
LocalizedText 377
LocalizedTextDAO 377 - 378
LocalizedTextUtil 366, 372
LocalizedTextUtil.setReload- Bundles() 388
location 189
logging
     interceptor 118
         logger interceptor 115
     Velocity 258
look and feel. See UI tag library
loop, over collections. See iterator tag
lower-scope dependency 161
 
M
 
Make Technologies 382
Map
     construction 222
     iterating with foreach and iterator tag 262
     map 221 - 222
     null access 328
     shorthand notation 222
     using with UI tags 301
mapping, keys to objects 142
match* 391
$math 267
math, functions in Velocity 267
message
     formatting 368
     internationalized 368 - 372
         internationalization 89
     source 362 - 367
     translation 89
MessageFormat 368, 370
     dates and numbers 370
messageKey 342
MessageWork 432
method execution
     dynamic 429
     static 429
mock component
     registering 394
mock object 389 - 391
     dynamic 390
     factory 142
     request 143
     singleton 140
     static 390
MockObjects 389
model interceptor 116
ModelDriven 95, 116, 125
     implementing 96
     resource bundle 364
model-driven interceptor 96, 125, 127, 134
modelDrivenStack 127
modules, building with include 58
modulus 216
moreResults() 43
multipart, applied to form tag 296
multiply 216
multiselect tags 303 - 305
 
N
 
Name property 434
namespace
     action tag 240
     applied to form tag 295
normal context 184, 186
not in 217
null access
     Collection 326 - 329
     property 227, 326
number format 370
 
O
 
Object Graph Navigation Language (OGNL) 20, 93, 210
     advanced features 212
     calling methods 217
     compared to other ELs 212 - 213
     context 213, 218 - 219
     downloading 212
     expression lists 218
     filtering 222 - 223
     key concepts 213
     literals 215 - 217
     operators 215 - 217
     outputting expression value 235
     projection 222 - 223
     reasons for using 211
     relationship to value stack 429 - 430
     setting values 218
     static methods and fields 218
     type conversion 321
offset notation 220
OGNL. See Object Graph Navigation Language (OGNL)
ognl.jar 20
OgnlContext 218
onblur 294
onchange 294
onclick 294
ondblclick 294
onfocus 294
onkeydown 294
onkeypress 294
onkeyup 294
onmousedown 294
onmousemove 294
onmouseout 294
onmouseover 294
onmouseup 294
onselect 294
OpenSymphony, SiteMesh 136
openTemplate 295
OSCore 20
oscore.jar 20
 
P
 
package, resource bundle 364
page controller, with the action tag 241
page scope 236
PageContext 184
pagination 378
<param> 359
param tag 252
     attributes 252
     dynamically generating i18n texts 378 - 381
     supplying values 252
     used with text tag 369
     with the action tag 241
     with the bean tag 239
     with the include tag 247
     with the text tag 251
     with the URL tag 248
parameter interceptor 94, 119 - 120
parameter map 315
     String arrays 322
ParameterAware 115, 121 - 122
parameterization 239
     localized texts 368 - 369
parameterized actions. See action, parameters
$parameters 284
     nameValue 293
parameters
     Command pattern 426
     setting 119 - 123
Parameters property 434
ParametersAware 147
params interceptor 115, 119 - 120, 126
     applying twice 421
     security 217
parse 184, 190
password tag 297
     attributes 298
pause 150
PDF, generating with JasperReports 203
PersistenceManager 165, 168
PersistenceManagerImpl 168
PetStore 146
Pico 171 - 172
POST 217, 226
Preparable 116, 124, 135
prepare interceptor 116, 126
     using between params interceptors 421
prepare() 124
PrepareInterceptor 124
PreResultListener 133 - 134
programmatic validation
     testing 398
properties
     accessing with OGNL 215
     chaining 215
property tag 232, 235
     attributes 235
     helloWorld 32
PropertyResourceBundle 362, 382
push tag 237 - 238
     attributes 237
     sharing JSP content 238
put() 434
 
R
 
race condition, IoC 162
radio button 276, 279
radio group, dynamic map construction 221
radio tag 283, 302
     attributes 302
redirect
     example 79
     result type 46
redirect result 188 - 191
     configuring 189 - 190
     difference from dispatcher 190 - 191
     dynamic locations 190
     handling reload requests 410
     passing request parameters 191
     performance 190
     reloading pages 190
     to another action 191
refactoring, template language 256
Registry pattern 142
regression test suite 389
relative path 41
reload requests, handling 410
reloading pages
     making easier with redirects 190
report, generating 203 - 207
$req 266, 284
request
     attributes 219
     getting 121 - 122
     parameters 219
request scope 151, 236
     configuration 152
     PersistenceManager 169
RequestDispatcher 187
     expense 198
required validator 343, 349
     example 349
requiredstring 340
     validator 343, 349
$res 266
reset 150
Resin 386
resin.xml 387
Resource Editor 382
resource management 138, 142 - 144
     active 172
ResourceBundle 86, 90, 362 - 363
     adding default 366
     defaults 366
     implementing as a class 375 - 378
     search order 364 - 366
ResourceBundle.getBundle() 363
ResourceLoader 269
resources, hard-coded 146 - 147
response, getting 121 - 122
result
     architecture 429
     configuring 46, 180 - 182
     location parsing 184
     responsibility 39
     variable interpolation 184
     verbose configuration 183
result code 78 - 79
     validation 33
Result interface 178 - 180, 429
result mapping
     Command pattern 426
     global 47
     setup 40 - 41
result type 46
     common 182 - 197
     default 47
     sample implementation 180
<result-types> 181
rollback() 155
root object 213 - 214, 224
Ruby 213
runtime
     template language 256 - 257
 
S
 
scope 149 - 151
     dependencies 161 - 162
     variable scoping, Velocity 264
     See Inversion of Control
scripting-events.vm 290
scriptlet 197
security 130, 217
     action aliasing 44
select box 276, 279
select tag 283, 299 - 302
     attributes 299
     dynamic map construction 221
     multiple selections. See multiselect tags
Service Locator pattern 172
     example 173
servlet
     config interceptor 121 - 122
     IoC examples 144
servlet filter, comparison to interceptor 113
Servlet specification 314 - 315
ServletActionContext 143
ServletConfigInterceptor 121
ServletContext 153
ServletContextListener 144
ServletDispatcher 431
     architecture 436
     how locale is set 374
     relationship to ActionProxy 431
     URL mapping 69
ServletRequest 153, 158
ServletRequestAware 115, 121 - 122, 143 - 144, 147
     example 121
ServletResponseAware 115, 121 - 122
session
     attributes 219
     getting 121 - 122
     Session 165 - 166
Session property 434
session scope 151, 236
     configuration 152
SessionAware 115, 121 - 122, 147
SessionFactory 165
SessionLifecycleListener 152
Set
     automatic type conversion 325
     set directive 265
set tag 236 - 237
     attributes 236
     scopes 236
setAttribute() 153
setContext() 436
setServletRequest() 144
setter 214
setUp() 400
shortCircuit 342
short-circuit 354
simple theme 288 - 290
Singleton pattern 139 - 141
     example 139
SiteMesh 136, 272
skeleton
     JAR files 20
     preparing 20
source code, IDE 386
spaghetti 149
Spring 171
$stack 266, 284
stack. See interceptor
start 150
static fields. See Object Graph Navigation Language (OGNL)
static methods. See Object Graph Navigation Language (OGNL) 218
static, testing with 391
StaticParametersInterceptor 120
stop 150
String 216
string, single and double quotes 215
stringLength validator
     example 348
stringlength validator 343
StringLengthFieldValidator 352 - 353
Struts 278
submission, preventing duplicates 409 - 413
subtract 216
success mapping 181
 
T
 
tabindex 292
tag attribute 291
tag library definition (TLD) 231
tag library descriptor, IDE 386
tag library, UI. See UI tag library
tag syntax 233 - 235
     new syntax 234 - 235
     new syntax, enabling 234
     new syntax, evaluation 235
     new syntax, parsing 234
     old syntax 233 - 234
tag, overview 232 - 235
taglib attributes, using getText() 369
taglib, directive 232
template 283 - 285
     overriding 404
templating language
     Velocity 256
testability, validation 338
Test-Driven Development 146
testing
     integration 135
     interceptors 135
     IoC 145 - 146
     with IoC 145 - 146
     without IoC 145
text message, writing localized 368
text tag 250 - 251, 368
     attributes 250
     example 368
     saving to the context 250
text.vm 403
textarea tag 298
     attributes 298
textfield tag 297
     attributes 297
     helloWorld 36
     overriding 403
     template contents 289
TextProvider 80, 86, 366, 401 - 402
theme 285
     custom 407 - 409
     simple 288 - 290
     XHTML 286 - 288
     xhtml/simple relationship 290
     See also UI tag library
#this 224, 228
thread, background task 127
ThreadLocal 374, 435 - 436
     get() 436
     set() 436
     testing with 391
three-column forms 407
tight coupling 139
timer interceptor 115, 117
token 125
     tag 410 - 411, 419
     token interceptor 125
token interceptor 116, 412
     re-rendering duplicate requests. See also tokenSession interceptor
token-session interceptor 116, 346, 413
top 225, 235
toString() 318
type conversion 93, 226 - 227, 314 - 320
     advanced 326 - 331
     basics 323 - 325
     benefits 319 - 320
     built-in converters 325 - 326
     class-level converters 322 - 323
     Command pattern 427
     common mistakes 322
     configuration 320 - 323
     default error message 372
     errors 329 - 330
     global converters 322
     i18n messages 371 - 372
     looking up objects by key 422
     null Collections 326 - 329
     null property access 326
     simple 323 - 326
     validator parameters 349
     why OGNL? 212
     xwork.xml 46
type converter, role 321 - 322
TypeConverter 321
 
U
 
UI tag library 36
     advanced usage 402 - 409
     bad techniques 407
     common attributes 292
     compared to JSP 273 - 276, 278 - 280
     creating new tags 406
     custom templates 406 - 407
     custom themes 407 - 409
     errors 280 - 282
     good techniques 408
     i18n labels 369
     integration with WebWork 283
     layout 280
     multiselect tags 305-307
     overriding templates 403 - 406
     placing content after elements 404
     specifying themes 408
     Struts-like tags 276 - 278
     styles 282 - 283
     template directory 69
     template lookup 284
     theme. See theme
     themes 69
     using param tag creatively 405
     Velocity integration 284 - 285
UI tag library
     integration with WebWork 283
UI tag reference 291 - 309
UI tags
     advanced tags 305 - 309
     common attributes 291 - 294
     reasons to use 272 - 283
     simple tags 294 - 299
unit test 389
     handling statics and ThreadLocals 391
     mock objects. See mock object
     why to use IoC 391
unit testing 135, 338
upload files
     automating 109
     configuration 110
URL tag 247 - 250
     attributes 247
     HTTP port 70
     HTTPS port 70
     ports 249
     saving in the context 248
     using with wait pages 416
url validator 343
utility interceptors 117 - 119
UUID, using with token tag 410
 
V
 
validate() 123 - 124, 338, 348, 352 - 353, 398
Validateable 80 - 82, 116, 123 - 124, 337 - 340
validation
     advanced usage 350 - 359
     basics 80 - 86
     chaining 357
     Command pattern 427
     contextual validation 353 - 354
     conversion errors 329 - 330
     creating a custom validator 351 - 353
     helloWorld 31
     i18n messages 370 - 371
     interceptor. See validator interceptor
     manual 336 - 340
     multiple action aliases 339
     parameterized messages 350
     programmatic 398
     short-circuiting 354 - 355
     stack 126
     testing 398 - 402
     testing XML files 398 - 402
     validator properties 342
     validator XML examples 348 - 350
     XML file 340 - 341
validation context 353 - 354, 358
validation framework
     advanced features 350 - 359
     registering validators 353
     Validation Framework 340, 346 - 350
     validation interceptor 124
validation interceptor 116, 345
validation.xml 388
ValidationAware 80, 82 - 86, 116, 123, 402
     relationship to token interceptor 412
     use by DefaultWorkflow- Interceptor 124
     using with testing 401
ValidationAwareSupport 402
validationWorkflowStack 126, 345
validator
     orthogonal 350
     registering 341 - 342
validator (continued)
     Validator 341, 351
         registering 353
validator interceptor 345 - 346
ValidatorContext 351
     using with testing 401
ValidatorFactory 341
validators.xml 341
ValidatorSupport 352
value attribute 248
value stack 213, 224 - 226, 233
     accessing statics 218
     action chaining 195
     architecture 429 - 430
     evaluating expression in 236
     evaluating in i18n texts 368
     getting data from 235
     i18n trick 367
     placing objects in 235
     placing variables in 235
     pushing on to in Velocity 263
     pushing references onto 237
     top of the stack. See top
     using with custom tags 407
     using with push tag 238
ValueStack property 434
variable replacement 184
Velocity 197, 213, 283
     advanced techniques 265 - 268
     assigning variables 265
     basic features 259 - 265
     configuration 70, 257 - 259
     control statements 261 - 265
     customizing context 267 - 268
     default objects in the stack 266
     directives 201
     download 197
     example 199 - 201
     hiding invalid properties 261
     if/else 264 - 265
     introduction 255 - 259
     JSP tag support 268 - 269
     looping 261 - 264
     method calls 261
     property access 259 - 261
     resource loading 269
     result 429
     switching to FreeMarker 203
     UI tag library integration 284 - 285
     using with JSP 198 - 199
     variables 201
velocity result 197 - 201
     advantages 197
     configuration 199
     parameters 199
     performance 198
velocity.properties 69, 258
     Velocity configuration 258
VelocityContext 265 - 267, 284
     compared to OGNL 260
$velocityCount 262
velocity-dep.jar 20
VelocityWebWorkUtil 266
view
     default 44
     without type conversion 317 - 318
visitor validator 344, 356 - 359
     context param 358
     contextual support 358 - 359
VisitorFieldValidator 358
     See also visitor validator
vs prefix 218
 
W
 
wait page 125, 413 - 416
web application
     configuration files 71
     layout 70
     optional libraries 72
     required libraries 71
     setting up 70 - 72
web resource directory 386
web.xml 21
     IoC configuration 151 - 153
     URL mapping 69
WebWork
     configuration 39
     downloading 20
     environment 385 - 388
$webwork 259, 266, 287
WebWork 2.2 70
webwork.configuration.xml.-reload 388
webwork.properties 70, 388
     additional config files 69
     custom Velocity contexts 268
     default resource bundles 366
     JSP tags in Velocity 268
     specify theme 409
     Velocity configuration 257
webwork.vm 258
webwork.xml, default interceptor stacks 64
webwork_locale 375
webwork-2.1.7.jar 20
webwork-default.xml 59, 181, 189, 193, 202, 345
     contents 59
     default stacks 126
     interceptors 114
         interceptor 63
WebWorkUtil 266
WebWorkVelocityContext 266 - 267
workflow 123 - 125, 337
     interceptor 116, 345
     interceptor order 135
     not validating actions 339
     stack 126
workflow. See DefaultWorkflowInterceptor
ww:action 186
<ww:param> 369
ww:param 406
<ww:property> 369
<ww:radio> 375
<ww:submit> 375
<ww:text> 369
<ww:token> 410
wwclass 269
wwfile 269
 
X
 
xhtml
     XHTML theme 286 - 288
     xhtml theme
         extending 408
XML file, testing validating 398 - 402
XML, JasperReports 204
XSLT, rendering 429
XWork 425
xwork.jar 20
xwork.xml 21, 202, 339, 345, 354, 358, 388, 426
     action parameters 120
xwork.xml (continued)
     configuring action class execution 426
     DTD 41
     modifying 153 - 154
     result code 429
     result mapping 426
     results 180
     setting configuration-time parameters 426
     Velocity configuration 257
xwork-conversion.properties 322