- Merged submodules directly into this module. This streamlines development by allowing automatic redeploys. Furthermore, this project is now used via Maven overlay instead of jar dependencies.
- Minimum Java version changed from 1.7 to 11.
Now supports Java 9+ modules. Due to still having filename-based automatic module dependencies,
*-SNAPSHOT versions include
module-info.classwhile releases include the
Automatic-Module-Namemanifest entry. To minimize the difference between these modes,
module-info.javadoes not perform any transitive requires.
Reduced use of property substitutions in
pom.xml. This is to help 3rd-party parsers that fail to perform full Maven-compatible substitutions.
- Now outputting HTML or XHTML based on the current response content type. This should eliminate validator warnings when used as HTML.
Now supports skin attributes for
serialization(default "auto") and
doctype(default "HTML5"). Defaulting to doctype "STRICT" until converted to HTML 5.
- Skins are now responsible for writing the DOCTYPE and html tag, too.
- Skins now use the new
- HTML email generators use the new AO Fluent HTML project.
- Removed setContentType tag.
Skin.getCharacterSet(Locale), since the default encoding is always
SkinTagnow sets Struts
Globals.XHTML_KEYbased on serialization. No need to use the <html:xhtml /> tag anymore.
<link rel="author" href="…" />support.
<skin:contentTitle />is now
- Optimized ServletContext attribute initialization and concurrency.
TicketLoggingHandlerautomatically loaded on start-up via
@WebListener. No more
LogFactory. Now just use
- Integrated with AO Web Resources.
- Added support for WebP images.
- Removed support for IE 6, 7, 8, and 9 since all are end-of-life.
Added support for Web development file types
Cleaned-up use of
JspException. Generally, methods declare
throws JspExceptionwhile actually throwing instances of
JspTagException. The exception to this is private implementation methods that both declare and throw
Split development-only classes into a new sub-project in
devel/. This sub-project is used only for development and is never deployed to artifact repositories.
- No longer trimming passwords.
VNC keystore moved from web resource
/WEB-INF/keystoreto filesystem resource
conf/keystore. This assumes that Tomcat is running with a working directory containing the
conf/folder, which is true on the AOServ Platform. This has two advantages:
- The webapp may be deployed as an unexploded WAR file.
- The keystore may be updated separately from the application. This is used, for example, by Let's Encrypt renewal hooks.
- Updated to Java™ EE 7 Web Profile (Servlet 3.1, JSP 2.3, EL 3.0, and JSTL 1.2).
Search engines are spiraling off target due to the "authenticationTarget" being rewritten into the URL for clients with cookies disabled. A servlet filter now sets a header
X-Robots-Tag: noindex, nofollowfor any request that contains any "authenticationTarget" parameter.
Furthermore, "authenticationTarget" is no longer written into URL parameters, and the parameter is no longer used after login. "authenticationTarget" is only taken from session, which also has security benefits (bad form to allow user-supplied redirects).
Finally, authentication redirect targets are no longer used directly from HTTP parameters. Instead, a session mapping of generated random IDs is maintained. The client is given the random ID, and redirects are performed from the URLs stored in session. Thus, cross-site redirects are protected by both temporary random ID and session.
- Implemented automatic newline and tab indentation.
- URLs provided in tag bodies now support both RFC 3986 URI and RFC 3987 IRI:
- <skin:link> now supports nested <ao:param> and <ao:params>.
- <skin:link> and <skin:path> now support param.* dynamic attributes.
- Added 401, 403, 503, and catch-all error handlers.
- Require secure session cookies in production.
- Now properly restoring Thread interrupted state on
- Removed package category and related signup forms for backup and colocation.
- Performed Checkstyle clean-up.
- TODO: On next release, also publish relocations for old aoweb-struts-core, aoweb-struts-resources, and aoweb-struts-webapp.
- Updated version of AO OSS Parent.
- Minimum Java version changed from 1.6 to 1.7.
- Using managed dependencies:
- This project uses managed dependencies.
- This project's managed dependencies may also be imported by other projects.
- New releases of modules.
- Updated dependencies.
- Using standard filter set provided by SemanticCMS.
- Improved Javadoc formatting.
- Improved README formatting.
- Working on SemanticCMS integration.
- shortTitle may now be specified on a per-parent basis, for when the shortTitle only makes sense within the context of that specific parent. This is useful for navigation items such as breadcrumbs or trees.
- No more page stack, just show title for current page only.
- Canonical URLs configured per-book.
- Project moved to GitHub and Maven.
- Web resources moved to separate jar file to share between projects without having to copy into the web root. Thank you servlets 3.0 for allowing us to no longer copy JSP files between projects with tedious build systems.
- Moved Java implementation to aoweb-struts-core package.
- Packaged for compatibility with old Ant build system.