WebWork 2.2 Release Notes

Key Changes

Productivity enhancements

Tools

  • Fully functional WebFlow support for JSP, FreeMarker, and Velocity
  • QuickStart: simple embedded application server for getting started immediately

Documentation

  • Improved documentation, including detailed information for every interceptor
  • Totally new example application: now the example application is a set of tutorials and only teaches best practices of WebWork, rather than every single feature.

Enhanced framework feedback

  • Better and more intelligent error reporting
  • "Developer" mode where inline errors are displayed when possible
  • Common interceptor stack issues, such as validation+workflow with no "input" result, are now reported in a more obvious way

Other

  • Deprecated WebWork IoC container in favor of Spring
  • Built-in support for Spring
  • Official support for wizards/workflows using the Scope Interceptor and a pre-release of Continuations
  • Removed support for WebWork 1.x migration jar

User interface improvements

UI tag overhaul

  • FreeMarker is now the default UI tag implementation
  • Refactored UI tag base classes such that they are no longer tied to JSP
  • New native Velocity and FreeMarker UI tag support, built on top of new base classes
  • UI tags now use "altSyntax" (available since 2.1.4) as the default syntax (the 2.0 - 2.1 syntax is deprecated but still available)
  • New Head tag that links the correct CSS and JavaScript files for each theme

Velocity Support Improvements

  • Upgraded support to velocity 1.4
  • webwork.velocity.contexts now chains contexts on each request, i.e. contexts do not need to be thread-safe

AJAX support

  • Official support for client side validation using DWR
  • New tabbed panel widget
  • Built in support for Dojo wdigets

Result changes

  • Velocity and FreeMarker Servlets are now deprecated in favor of direct results

Other

  • Easy way to invoke different action name or command, making forms with multiple buttons easy to use
  • Initial JSR168 integration

Core API changes

Type conversion

  • Typing support in Maps, Sets, and Lists is now supported even when the collection is not null
  • Map type conversion support for keys and values
  • Support for Java 5 generics and annotations for Collections and enums

Other

  • Improved exception handling, with support for exception-to-result mapping in xwork.xml
  • Parameters interceptor updated to let you include and/or exclude certain parameters, thereby providing a simple way to secure what data can be changed from the web

Migration Notes

WebWork 2.2 is the most significant release since the 2.0 release two years ago. There are some significant changes, deprecated items, and various issues to be aware of when upgrading or if you're just curious what is new. Please see the WebWork 2.2 Migration Notes for more info.

Changelog

For a complete list of all the changes, please refer to the complete changelog

OpenSymphony JIRA (328 issues)
T Key Summary
Bug WW-1078 Broken links in Shopping-Cart
Bug WW-1077 setting theme in page, context, or session scope has not effect
Task WW-1076 Move all Velocity templates to archive
Task WW-1075 url validator docs
Task WW-1074 AJAX docs screwed up
Task WW-1073 control tags docs snippets are borken
Bug WW-1072 select.ftl emptyOption evaluation
Bug WW-1071 DoubleSelect's second select does not allow a predefined value to be selected
Bug WW-1070 double select created option with key and value wrongly
Improvement WW-1069 Ability to use freemarker map built-ins (?keys, ?values) as well as plain map methods (.keySet(), get(foo))
Improvement WW-1065 TestCase for the Property component
Task WW-1064 have a link in tags page to altsyntax page
New Feature WW-1062 Add a OptionTransferSelect component
Bug WW-1061 checkboxlist.ftl does not allow disabled parameter handling in WW2.2beta4
Task WW-1059 Make the dojo configuration in ww:head hook into the il8n infrastructure
Bug WW-1058 xhtml theme's form-validate.ftl onsubmit javascript is bad
Bug WW-1057 DefaultActionMapper appending extra slash when namespace is "/"
Improvement WW-1056 Change defaultStack order
Improvement WW-1055 Warn when properties are null
Task WW-1054 Include common build in project
Task WW-1053 AJAX Validation Documentation
Bug WW-1052 Always cleanup ActionContext
Improvement WW-1051 Enable tag attribute description to be usable for both javadoc and tagdoclet
Task WW-1050 Add DWR 1.1-beta2 jar to ivy-repository
Bug WW-1049 ChainingInterceptor doesn't accept null of CompoundRoot element
Bug WW-1048 RemoteCallUIBean uses UrlHelper to build url for href attribute breaks <ww:a /> tag
Bug WW-1047 Fix broken locale files of jscalendar
Bug WW-1046 DefaultActionMapper ignores the root ("/") namespace
Improvement WW-1045 Include datepicker css in new ww:head tag
New Feature WW-1044 Add a fielderror tag to display field errors if exist
Bug WW-1043 Validation Errors with DWR (AJAX Tutorial)
Bug WW-1041 Showcase - Edit Employee form broken
Improvement WW-1036 Include datepicker css in new ww:head tag
New Feature WW-1035 Add a actionerror tag that will display action error if they exist
Improvement WW-1034 Datepicker uses wrong date format for en locales
Improvement WW-1033 Generate tld attribute descriptions from property javadoc
Task WW-1032 Document new head tag
Bug WW-1031 Remote forms don't work with new dojo
Improvement WW-1030 Loading Freemarker templates with the ActionContext's Locale
Bug WW-1025 Showcase example: Spring throws strange exception while wiring action instance
Bug WW-1024 dist build target is broken, webapps are not longer packaged
Bug WW-1023 Item keys should use findValue
Bug WW-1022 A tag doesn't work with params
Bug WW-1021 VelocityTools 1.2 ToolboxManager implementation causes NPE in VelocityManager
Improvement WW-1020 Consolidate ww:a and ww:href tag into ww:a
New Feature WW-1019 Pico/nano integration
Task WW-1017 Update DOJO to release 0.20
Improvement WW-1016 Merge Quick Start Guide into Getting Started document
Bug WW-1015 Cannot create Portlet instance com.opensymphony.webwork.portlet.WebWorkPortlet for Portlet Application webwork
Bug WW-1014 i18n reloading in Tomcat
Bug WW-1013 Typo!
Bug WW-1012 tabbedpanel-close.ftl is broken due to iterator refactoring
Bug WW-1010 AbstractListTag no longer allows nulls for the list attribute
Task WW-1009 AJAX tutorial broken
Bug WW-1008 Iterator tag throwing NullPointer
Task WW-1007 SiteMesh docs out of date
Task WW-1006 Java 5 support
Task WW-1005 Action chaining docs
Task WW-1004 OGNL docs need new examples
Task WW-1002 I18n docs out of date
Task WW-1001 Client side validation
Task WW-1000 Validation examples outdated
Task WW-999 Make all result types based on snippets
Task WW-998 Document Exception Handling
Task WW-997 document for each validators type its usage, parameter and example using snippet
Bug WW-996 Type conversion not working for map
Task WW-995 Please update documentation for the FileUploadInterceptor - allowedTypes parameter.
Bug WW-994 Component based IteratorTag never prints out is body
Task WW-993 Add Exception Mappings to Config Browser
Bug WW-991 FilterDispatcher setup and cleanup non-webwork request
Bug WW-990 is extremely unhelpful for new people a exception thrown message
Bug WW-989 WW Action Tag does not go through ActionMapper
Improvement WW-987 org.opensymphony used in text constants instead of com.opensymphony
Improvement WW-986 Re-add uri declaration in WW 2.2 tld
Bug WW-985 New FM templates don't support booleans very well
Task WW-984 Please define the scope interceptor in webwork-default.xml
Bug WW-983 option values are locale specific formatted - should only be HTML escaped.
Bug WW-982 Quickstart broken on OS X
Improvement WW-981 Calls made to Configuration instances are not centralized constants.
Task WW-979 Verify on WebLogic 9.0
Bug WW-978 ww:sort ww:generator and ww:subset tags are broken
Bug WW-977 Input and Output streams not closed in StreamResult
Bug WW-976 WW Portlets can't be deployed in Liferay or JBoss Portal
Bug WW-975 Snippet macro doing weird things with text tag
Bug WW-974 set useAltSyntax problem
Improvement WW-973 Make datepicker locale aware
Bug WW-972 ww:property tag does not recognize alt-syntax
Improvement WW-971 Setup XDoclet to build tag documentation and tld from component sources
Bug WW-969 Fix Subset Tag
Bug WW-968 Fix Append Tag
Bug WW-967 Fix Merge Tag
Bug WW-966 i18n issue, locale is randomly switched
Bug WW-965 Fix WW Generator Tag
Improvement WW-964 Support for JasperReports 1.1.0
Improvement WW-963 Add overridable publishException method to ExceptionMappingInterceptor
Bug WW-961 chainStack defined twice in webwork-defaults.xml
Bug WW-960 Action tag does not do include properly
Bug WW-957 TabbedPaneTag doesn't have openTemplate setter
Bug WW-956 UIBean NPE with ww.submit tag
Improvement WW-955 Switch to using [ and ] in Freemarker templates
Bug WW-954 Freemarker does not handle map correctly, cant lookup value
Bug WW-953 Very bad performance using new WW 2.2 tags
Bug WW-952 Superflous logging with config-browser
Bug WW-951 Config browser problem
Bug WW-950 config-browser showConfig.action not work
Improvement WW-949 UI Form element should support theme attribute
Improvement WW-948 Make build from distribution package self-contained
Bug WW-947 Sample webapps build process is broken in the distribution
Task WW-946 File interceptor should allow all files unless otherwise specified
Bug WW-944 Disabled namespace attribute when not using AJAX validation
Bug WW-943 AJAX validation and devMode don't play nice
Bug WW-941 Cleanup and SiteMesh problems
Bug WW-940 Dates cause problem with UI tags in FM
Improvement WW-939 Clean-up the Release Notes
Bug WW-938 WW:Sort Tag is not working
Bug WW-937 theme css_xhtml is missing form-close.ftl
Bug WW-936 problem with ww:form tag
New Feature WW-933 Add a page to test all UI components
Task WW-931 Add dojo Color-Chooser functionality.
Bug WW-930 ClassCastException in WW2 label tag rendering when value expression evaluates to a non-String type
Bug WW-929 Freemarker rendering of input tags should not apply locale formatting
Bug WW-928 Seems like download page gives wrong file of ww 2.2 beta 2
Bug WW-927 ww 2.2 beta binaries is available for downloading, but xwork 1.1 is not
Bug WW-926 Type conversion fails with ModelDriven actions
Task WW-925 Document the config-browser in Related Tools
Task WW-923 Fix up validation documentation
Bug WW-921 Defect in com.opensymphony.webwork.views.util.ResourceUtil
Bug WW-920 Missing attribute for ww:form tag
Bug WW-919 Bug in DefaultActionMapper (could be Weblogic specific)
Bug WW-918 Setting webwork locale or Action locale has no effect on JasperReports result
Bug WW-917 HttpServletRequest locale/encoding problem
Task WW-916 Complete Architecture section of Documentation
Task WW-915 Complete Introduction section of Documentation
New Feature WW-914 Create new ww:errors tag
New Feature WW-913 Alt Syntax Migration - Page Specific altSyntax Change
New Feature WW-912 ww:a support for preInvokeJS
Task WW-911 Fix velocity code bug
Task WW-910 Update the IOC section to reflect Spring intergration.
Bug WW-909 Document FreeMarker simple map change
Bug WW-907 ww:a does not support nested param tags
Sub-task WW-905 Update Scope Interceptor Documentation
Sub-task WW-904 Update Execute and Wait Interceptor Documentation
Sub-task WW-903 Update File Upload Interceptor Documentation
Sub-task WW-902 Update Chaining Interceptor Documentation
Sub-task WW-901 Complete Conversion Error Interceptor Documentation
Sub-task WW-900 Complete Prepare Interceptor Documentation
Sub-task WW-899 Complete Servlet Config Interceptor Documentation
Sub-task WW-898 Complete Workflow Interceptor Documentation
Sub-task WW-897 Complete Validation Interceptor Documentation
Sub-task WW-896 Complete Token Session Interceptor Documentation
Sub-task WW-895 Complete Token Interceptor Documentation
Sub-task WW-894 Complete Component Interceptor Documentation
Sub-task WW-893 Complete Model Driven Interceptor Documentation
Sub-task WW-892 Complete Parameters Interceptor Documentation
Sub-task WW-891 Complete Static Parameters Interceptor Documentation
Sub-task WW-890 Complete I18n Interceptor Documentation
Task WW-889 Complete Interceptor Documentation
Task WW-887 Clean up FAQ
Task WW-885 Document how validation picks up a default validators.xml now
Task WW-884 Document new type conversion/collection stuff
Task WW-883 Document general FM result integration (very basics)
Task WW-882 Document general jsp result integration (very basics)
Task WW-881 Document general velocity result integration (very basics)
Task WW-880 Rename Prototype to QuickStart
Task WW-879 Rename WebFlow to SiteGraph
Task WW-878 Document ivy build process and how dependencies are handled
Task WW-877 Start new, clean "best practices" section
Task WW-876 Document how to launch "WebFlow" (SiteGraph?)
Task WW-875 Document changes to the Session Map impl
Task WW-873 Document how static content is served
Task WW-872 Document date picker tag
Task WW-871 Document altSyntax and TagSyntax
Task WW-870 Document JSP-only tags
Task WW-869 Document JSP tag syntax (like Velocity and FM)
Task WW-868 Document each generic tag
Task WW-867 Document new webwork.properties settings
Task WW-866 Document ActionMapper feature
Task WW-865 Document ParameterNameAware feature
Task WW-864 Document new redirect-action result type
Task WW-863 Document special button names (action:, etc)
Task WW-862 Document themes and new theme extension feature
Task WW-861 Pure client side validation
Task WW-860 Document deleted/deprecated items
Task WW-859 Document AJAX features
Task WW-858 Document prototype/launcher info
Task WW-857 Document execAndWait changes
Task WW-856 Document file upload interceptor/file upload
Task WW-855 Document i18n interceptor
Task WW-854 Document continuations
Task WW-853 Document XWork IOC deprecation
Bug WW-851 webwork.components.Form small bug:
Bug WW-850 taglib.tld form tag missing afterLoading attrobite
Bug WW-849 reloadingText attribute not on PanelTag
Bug WW-848 example webapp starter throws NullPointerException in com.acme.CreatePerson.execute( )
Bug WW-847 WW2.2 Tag Syntax Issues
Bug WW-846 css_xhtml validation.js addError IE bug fix
Bug WW-845 css_xhtml/submit.ftl remove controlfooter include
Bug WW-844 JspTaglibs in freemarker isn´t working
Bug WW-842 datepicker always set the value in the last field
Bug WW-841 Illegal flush with URL Tag and Sitemesh Tags
Bug WW-840 Shopping cart add to cart not working
New Feature WW-839 css_xhtml theme
Bug WW-836 DispatcherUtils not JDK 1.3 compliant
Improvement WW-835 FileUploadInterceptor should use a deny-all policy instead of both a allow and disallow.
Bug WW-834 Freemarker CallbackWriter does not properly write out content if usesBody() is true
Bug WW-833 DWRValidator not populating entire context
Bug WW-832 Shoping-Cart Example Has Several Issues
Bug WW-831 Incorrect wrap attribute of the TextArea UI component
Bug WW-829 VelocityResult does not always call OutputStreamWriter flush() method
Bug WW-828 maxlength is broken
Bug WW-825 The onsubmit attribute in the form tag is missing
Bug WW-824 redundant ServletDispatcher error handling complicates filters
Bug WW-823 Displaytag still doesn't work
Bug WW-821 FileUploadInterceptor Error When not set parameter,and should save message in properties
Task WW-820 Reconcile dojo with the newest release
Bug WW-819 Orionserver filter request doesn't contain action name in getServletPath()
Bug WW-817 Sitemesh decorator not finding actions when using FilterDispatcher
New Feature WW-815 Ability to Specify ObjectFactory
Improvement WW-813 Make ExecuteAndWaitInterceptor easier to extend
Bug WW-812 JasperReports: support for delimeter
Bug WW-811 StreamResult doesn't close InputStream
Bug WW-810 Iterator Sort tag fails
Improvement WW-806 Better logging of parameters interceptor
Bug WW-804 Not clear where ww2 looks for webwork.velocity.configfile
Bug WW-800 ACTION_NAME is never put on the stack
Bug WW-798 JakartaMultiPartRequest does not set the header encoding, so the filename can not be parsed correctly when using a UTF-8 encoding in request.
Bug WW-792 ActionTag does not replace old stack on exception
Bug WW-791 Configuration browser does not work with velocity 1.4
Bug WW-790 WebWork does not refresh ressource bundle when told to do so
Bug WW-787 support for onclick scripting event missing in checkboxlist tag
Improvement WW-786 Add contains to ComponentTag
Bug WW-784 ww:property does not escape HTML by default
Improvement WW-783 Checkboxlist.vm in xhtml should point to Checkboxlist.vm under simple template dir
Bug WW-781 Velocity contexts are shared between threads
Bug WW-780 Manifest problem with dependency commons-logging
Bug WW-779 WebWorkTagSupport.translateVariables() doesn't work with lists or maps
Bug WW-778 WW2: IfTag does not always return true or false
Bug WW-776 MultipartRequestWrapper swallows errors coming from a parser
Bug WW-775 ww:if/else expression bug
Bug WW-774 WW framework creates extraneous Session objects
Bug WW-773 UrlHelper SHOULD use &amp; entity instead of & to add GET parameters
Bug WW-768 The label.vm template uses attribute "id" instead of "for"
Bug WW-767 2.1.7 AbstractListTag throw NullPointerException in method evaluateExtraParams
Improvement WW-763 True velocity macros for UI tags
Bug WW-761 FileUploadInterceptor does not use parameters defined in JavaDocs.
Bug WW-760 white space issue with webwork.custom.i18n.resources webwork.properties property
Bug WW-759 LogFactory.releaseAll() should be called at application end
Improvement WW-758 Use Introspector.flushCashes() to deal with memory leaks on application reload
Bug WW-756 broken link in wikidoc
New Feature WW-755 XMLHttpRequest component to replace DOM node with new HTML
Bug WW-754 Infinite Loop in XSLTResult's DOM adapter
Bug WW-753 Website 404s
Bug WW-751 xslt view support needs to implement additional methods to support 1.5
Bug WW-748 StreamResult should be close inputStream
Bug WW-747 URLHelper class does not use charset for encoding
Bug WW-745 no scripting attributes on the submit tag
Bug WW-744 Tutorial needs to have latest jar
Bug WW-743 execAndWait Interceptor Override Default Action Method
Bug WW-742 wrap attribute in textarea.vm in 'simple' template
Improvement WW-740 UI tag checkboxlist should have html scripting events attribute
Bug WW-739 Action tag TLD missing ignoreContextParams
Improvement WW-738 Use ObjectFactory in velocityManager for setting webwork.velocity.contexts
Improvement WW-737 JasperReports examples in the webwork-example app not working
Bug WW-736 XmlHttpRequest validation breaks on IE
Bug WW-735 $webwork.evaluate() throws NPE
Bug WW-730 2.1.7 text taglib is not compatible with old version
Bug WW-729 UrlTag always includes parameters unless includeParams is explicitly set to false
Bug WW-725 The include tag doesn't cleanup after itself
Bug WW-721 <ww:subset/> problem
Improvement WW-720 Add content-length to StreamResult
Improvement WW-719 Session object not auto-shared with Velocity context
Bug WW-717 The "label" tags is missing the "for" attribute
Bug WW-713 The <ww:url> tag does not correctly construct the URL when the scheme attribute is set and the scheme changes.
Improvement WW-712 Update config browser to work with the new syntax
Improvement WW-709 Allow specifying a text for empty option on the select tag
Bug WW-708 AbstractListTag classes throw NPE for null value
Bug WW-707 Velocity templates in UTF-8 still do not work
Bug WW-700 Validation lacking logging of missing field.
New Feature WW-697 Regex Field Validator
Bug WW-682 change webwork.ui.templateDir=otherDir, tag class, doEndTag: Unable to find resource '/template/simple/scripting-events.vm' error.
New Feature WW-679 The "Component" UI tag can't be used as part of a Velocity #bodytag directive
Bug WW-672 URLTag does not reset between invocations
Bug WW-654 Error occurs with Page Context when having request dispatcher code in the Action code
Bug WW-650 CoolUriServletDispatcher throws StringIndexOutOfBoundsException
Bug WW-648 Client-side validation doesn't allow cancelling
Improvement WW-636 Improve URL-Tag to support value stack and namespaces
Bug WW-621 Lesson 2 web.xml refers to webwork-2.1.jar file
Improvement WW-609 Velocity context available in Sitemesh 2.1 and WebWork use different keys for the request and response
New Feature WW-603 Create a NumericFieldValidator using JavaScript
Bug WW-596 IllegalArgumentException when setting an indexed property
Bug WW-591 Wrong output when using nesting #bodytags (with a custom tag)
Improvement WW-589 Printer-friendly of all documentatioon
Bug WW-588 Unexpected behaviour of SessionMap.clear()
Bug WW-572 Lesson 2 incorrectly references the xwork-validator-1.0.dtd for validators.xml
Bug WW-570 Table tag parameters and sorting
New Feature WW-558 Exception Handler Interceptor and Exception Action
Bug WW-557 Generator Tag doesn't work properly
Improvement WW-556 Allow ComponentManager scopes to be independant
New Feature WW-540 Add a ServletFilter to clean up the ActionContext, allowing Sitemesh decorators to use the ActionContext with the taglib
Bug WW-536 Lost the session on OC4J 9.0.4 using WebWork2
Bug WW-533 Add support for Velocity 1.4 - Changes WebWork directives
Improvement WW-528 Switch to using VelocityViewServlet from VelocityTools
Bug WW-520 Wrong &amp; management in XML based output (WML and XHTML)
Bug WW-513 IOC Application and Session scopes do not work in Tomcat 5
Bug WW-507 "command" parameter isn't honored for command driven actions
Bug WW-505 Re-opened WW-430 (double action tag bug)
Improvement WW-491 Spring/Xwork Action configuration
Bug WW-489 Setting of pageContext in directive (tag)
Improvement WW-477 WebWork needs a simple "Hello World" demo app
New Feature WW-463 ww:error tag
Improvement WW-452 Pell Multipart library dies if content type is too long
Bug WW-447 CoolUriServletDispatcher errors related to getServletPath()
New Feature WW-439 Simple wizard framework
Bug WW-436 ParamTag inconsistently evaluates the 'name' attribute
Improvement WW-416 Reload resourcebundle from filesystem during runtime
Bug WW-405 Escaping text in form fields from velocity tags not working.
Bug WW-395 urltag doesnt show the exact url used
Improvement WW-394 ServletDispatcher to use requestURI instead of servletPath
New Feature WW-341 ScopeInterceptor
New Feature WW-337 Text formatting support from tag library
New Feature WW-329 Date picker component
New Feature WW-304 client-side validations based on validation framework declared validations
Improvement WW-270 Component UI tag should allow body content manipulation
Bug WW-220 Velocity template for ui:textarea needs improvement
New Feature WW-159 ServletRedirectResult should be aware of context paths
New Feature WW-157 Better JSTL Support
Task WW-16 More velocity macros, etc
New Feature WW-6 Support for Portlet API