[ https://issues.apache.org/jira/browse/WW-3599?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Lukasz Lenart closed WW-3599. ----------------------------- Resolution: Resolved This was resolved in OGNL at some point > Struts2 ignores 'final' modifier when backing form onto field > ------------------------------------------------------------- > > Key: WW-3599 > URL: https://issues.apache.org/jira/browse/WW-3599 > Project: Struts 2 > Issue Type: Bug > Components: Core Actions > Affects Versions: 2.1.6 > Reporter: Jon > Priority: Minor > > I had a bean and nested enum defined like > public class SomeBean { > private Type type; > // getters+setters for type > public static enum Type { > UNSET(0), > USER(1), > GROUP(2); > public final short code; > private Type(short code) { > this.code = code; > } > } > } > We accidentally included the final field 'code' as the name of a field on a > form that was backed by Struts. e.g. something like: > <s:select name="someBeanInstance.type.code" ... /> > When this field was submitted, the final field 'code' was updated on the enum > to match the value picked in the select box. This caused a huge amount of > confusion for a time, as this field is marked final and so shouldn't ever be > updated... presumably Struts is using reflection to bypass the JVM > enforcement on finality? > Fix would be to check a public field isn't marked final, before backing a > form onto it. -- This message was sent by Atlassian Jira (v8.20.10#820010)