Breaking Struts changes in Confluence 8.8

Hi @AparnaMokkapati

Unfortunately we have not yet tested or properly support that scenario. You may need to restructure your DTOs to require a depth of 2 or less.

Hi @scott.dudley

Yes I can confirm it has shipped. We also reached out to most impacted vendors directly, some time ago, as identified through bytecode scanning.

This is what I did “… restructure your DTOs to require a depth of 2 or less…”

I was looking at some nesting in some of my velocity template params and decide that I was staring at that for about as long as it would take me to just work around any nesting issues by flattening out my DTO data model. It requires some labor to flatten it out but it is conceptually not difficult, maybe a half day of coding, and it is a “sure thing” for backwards and forwards compat so that is the approach I took.

It seems like there are also breaking changes to the legacy xwork actions without any of the above-mentioned features (no StructsParameter etc.). We have an action, where the doSave() method is correctly, but the setters for any form fields are NOT called. This means that users cannot use our app and cannot save any changes.

Is there anything else app vendors have to do to keep 8.8 compatibility for their xwork code?

Please refer to the documentation and earlier replies - use the @ParameterSafe annotation if you do not have access to @StrutsParameter.

Apparently @StrutsParameter is NOT only required for parameter POJOs (as was my understanding of the struts documentation on that annotation) but also for simple values (getters/setters) on the action class. If setters are not annotated, they are quietly skipped and nothing happens.

Since the annotation is only part of the as yet unreleased Struts-6.4 release, I added a “provided” dependency to “struts2-core:6.3.0.2-atlassian-5”. If this version is not present in the Confluence installation (say, on 8.5), that is no problem, since annotations don’t cause ClassNotFoundExceptions. So the same code then works on 8.5 but also on 8.8.

But yes, I would have liked this to be part of the documentation.

Now with my current knowledge your original post mentions kind of the same thing. I guess I didn’t really read it closely enough.