[ https://issues.apache.org/jira/browse/WW-3530?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Lukasz Lenart updated WW-3530: ------------------------------ Fix Version/s: 6.7.1 (was: 6.7.0) > Invalid cache key in AnnotationActionValidationManager.buildValidatorKey > when using visitor field validators > ------------------------------------------------------------------------------------------------------------- > > Key: WW-3530 > URL: https://issues.apache.org/jira/browse/WW-3530 > Project: Struts 2 > Issue Type: Bug > Components: XML Validators > Affects Versions: 2.2.1 > Reporter: Johnny Yu > Priority: Major > Fix For: 6.7.1 > > > Error scenerio: > MyAction-validation.xml: > <validators> > <field name="myField"> <!-- MyClass --> > <field-validator type="visitor"> > <param name="context">basic</param> > <param name="appendPrefix">true</param> > <message/> > </field-validator> > </field> > <field name="myField"> > <field-validator type="visitor"> > <param name="context">additional</param> > <param name="appendPrefix">true</param> > <message/> > </field-validator> > </field> > </validators> > In this case, validators in MyClass-basic-validation.xml will be executed two > times, but validators in MyClass-additional-validation.xml will just ignored. > The problem is caused by > AnnotationActionValidationManager.buildValidatorKey(Class) which returns the > same cache key for the validator cache. > The current cache key is created by: > StringBuilder sb = new StringBuilder(clazz.getName()); > sb.append("/"); > sb.append(proxy.getConfig().getName()); > sb.append("|"); > sb.append(proxy.getMethod()); > The context is not a part of the cache key. Therefore, the two visitor > validator will just get the same cache key. -- This message was sent by Atlassian Jira (v8.20.10#820010)