AOWeb Struts Core Changelog


Snapshot Notes

  • 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.class while releases include the Automatic-Module-Name manifest entry. To minimize the difference between these modes, does 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").
  • Skins are now responsible for writing the DOCTYPE and html tag, too.
  • Skins now use the new Html instead of JspWriter.
  • HTML email generators use the new AO Fluent HTML project.
  • Removed setContentType tag.
  • Removed Skin.getCharacterSet(Locale), since the default encoding is always UTF-8.
  • SkinTag now sets Struts Globals.XHTML_KEY based on serialization. No need to use the <html:xhtml /> tag anymore.
  • Added <link rel="author" href="…" /> support.
  • <skin:contentTitle /> is now scriptless.
  • Optimized ServletContext attribute initialization and concurrency.
  • TicketLoggingHandler automatically loaded on start-up via @WebListener. No more LogFactory. Now just use Logger.getLogger(…) like normal.
  • Integrated with AO Web Resources.
  • Added support for WebP images.
  • Removed support or IE 6, 7, 8, and 9 since all are end-of-life.
  • Added support for Web development file types *.less, *.sass, *.scss, *, and *
  • Cleaned-up use of JspTagException versus JspException. Generally, methods declare throws JspException while actually throwing instances of JspTagException. The exception to this is private implementation methods that both declare and throw JspTagException.
  • 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/keystore to 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:
    1. The webapp may be deployed as an unexploded WAR file.
    2. 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).
  • Replaced VNC Java Applet+SSL with JavaScript+WebSocket.
  • 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, nofollow for any request that contains any "authenticationTarget" parameter.
  • Implemented automatic newline and tab indentation.


Release Notes

  • Updated for compatibility with ao-lang-3.0.0.
  • Updated for compatibility with aocode-public-3.1.0.
  • Updated for compatibility with aoserv-client-1.83.1.
  • Cookie names, values, comments, and paths are now URI-encoded.
  • No longer URL rewriting file: and data: URLs.
  • Using new filter EncodeURIFilter which encodes the URL to either RFC 3986 URI US-ASCII format or RFC 3987 IRI Unicode format.
  • No longer URL rewriting *.dia URLs.
  • SessionResponseWrapper now supports Canonical URLs, with the following behavior:
    1. ;jsessionid is never used
    2. language parameter is always added for non-default language
    3. All other cookie parameters are skipped, such as authenticationTarget, layout, and su.
    This should result in URLs consistent with what search engines see, assuming search engines never supply cookies, never change the layout, and never tried to login or "su".
  • Minimized session creation.
  • PermissionAction.getPermissions() changed from List to Set.
  • Skin.Language now uses AnyURI instead of String for URLs.


Release Notes

  • Minimum Java version changed from 1.6 to 1.7.
  • Implemented VNC compatibility for HVM guests on Xen 4.6 on CentOS 7.
  • Aligned the session URL rewriting excluded path extensions to match other projects. The list is now:
    1. *.bmp (added this release)
    2. *.css
    3. *.exe (added this release)
    4. *.gif
    5. *.ico
    6. *.jpeg
    7. *.jpg
    8. *.js
    9. *.png
    10. *.svg (added this release)
    11. *.txt
    12. *.zip
  • Payment form improvements:
    1. Passing more values to underlying payment processing API:
      1. principalName from authenticated user
      2. groupName from account name
      3. email from account profile's first billing email address
      4. phone from account profile
      5. fax from account profile
    2. New function ${aoweb:getCardNumberDisplay()} to format masked card numbers for display.
    3. New function ${aoweb:getExpirationDisplay()} to format expiration dates for display.
  • Using managed dependencies:
    1. This project uses managed dependencies.
    2. This project's managed dependencies may also be imported by other projects.


Release Notes

  • Updated for new AO Net Types project pulled out of AOServ Client.
  • Updated for validation base moved from AOServ Client to AO Lang.
  • Making more extensive use of self-validating types.
  • Extended network protocol to send randomized command sequences to help ensure stream integrity.
  • Updated dependencies.


Release Notes

  • New AO OSS Parent POM to simplify pom.xml files.
  • Project documentation moved to per-project book in SemanticCMS format.
  • Added changelog as top-level project link.
  • Taglib tlib-version is now set automatically during build. Unfortunately, we cannot include "-SNAPSHOT" on snapshot builds due to the requirement of "Dewey decimal" for taglib versions. The unambiguous full version is annotated via comment.


Release Notes

  • Improved Javadoc formatting.
  • Improved README formatting.
  • No more page stack, just show title for current page only.


Release Notes

  • Using latest releases of dependencies.


Release Notes

  • Using standard filter set provided by SemanticCMS.
  • SessionFilter moved from main web.xml to web-fragment.xml, so it can be ordered between other fragments instead of always being top of the filter chain.


Release Notes

  • Project moved to GitHub and Maven.
  • Moved Java implementation to aoweb-struts-core package.
  • Packaged for compatibility with old Ant build system.
  • Storing PageTag on request attribute so can capture across jsp:includes.