| |
Stripes |
Struts2 |
WebBee |
| Version |
1.5 |
2.0.12 |
1.0.1 |
| Configuration |
web.xml |
web.xml, struts.xml, optionally struts.properties and others |
web.xml, optionally app.properties |
| Main workhorse |
Classes that implement ActionBean |
Classes that have an execute() method, optionally implement Action, or extend ActionSupport |
Classes that extend BaseBlock |
| Response mechanism |
Instance of Resolution |
String identifier that maps to a result in struts.xml or in an annotation |
Any model object |
| View technology |
JSP or FreeMarker |
JSP, FreeMarker, or Velocity |
Built in template engine, or JSP, or Velocity |
| Layout mechanism |
Built-in, with three layout tags. For people who like Tiles or SiteMesh, they can be used as well. |
Tiles or SiteMesh |
Built-in |
| Binding mechanism |
Built-in |
OGNL |
Built-in |
| Validation |
@Validate and @ValidateNestedProperties |
Configure in an XML file, or use annotations |
Configure use annotations |
| Validation short-circuiting |
Built-in, configurable with when=ValidationState.ALWAYS and Validation.InvokeValidateWhenErrorsExist |
Set short-circuit="true" on <field-validator> |
Built-in, polymorphism configurable |
| Custom validation |
Annotate your method with @ValidationMethod |
Extend either ValidatorSupport or FieldValidatorSupport, and configure in validators.xml |
Annotate your fields with @validator class implementingFieldValidator |
| Model-to-view data transfer |
${actionBean} attribute |
ValueStack |
Direct built-in |
| Type conversion |
Implementations of TypeConverter<T> (generified) |
Implementations of ognl.TypeConverter, typically extensions of StrutsTypeConverter (not generified) |
Annotate your fields with @converter class implementing FieldConverter |
| Formatting |
Implementations of Formatter<T> (generified) |
Implementations of ognl.TypeConverter, typically extensions of StrutsTypeConverter (not generified) |
Can be emulated using converter mechanism |
| Custom module configuration |
Automatically loaded with Extension.Packages init-parameter |
Configuration in struts.xml |
Configuration in app.properties |
| Interceptors |
Implementations of Interceptor, or methods annotated with @Before/@After |
Implementations of Interceptor, with configuration in struts.xml |
Inheritance mechanism |
| Localization |
Resource bundle(s) for errors and field names, and JSTL |
Resource bundle search mechanism |
Resource bundle(s) for errors, messages, labels and field names |