[ http://issues.apache.org/jira/browse/TAPESTRY-535?page=comments#action_12317887 ]
Kent Tong commented on TAPESTRY-535: ------------------------------------ Sorry, a more appropriate title is: When binding reference contains a colon, binding is treated as literal regardless of default prefix. > When binding prefix not found, binding is treated as literal regardless of > default prefix > ----------------------------------------------------------------------------------------- > > Key: TAPESTRY-535 > URL: http://issues.apache.org/jira/browse/TAPESTRY-535 > Project: Tapestry > Type: Bug > Components: Framework > Versions: 4.0 > Environment: Windows XP > Reporter: Kent Tong > > For a binding like this: > <component id="foo" type="Insert"> > <binding name="value" value="ognl:getCapitalized('a:b')"/> > </component> > works and will output "A:B". But if the ognl prefix is not specified (it is > the default): > <component id="foo" type="Insert"> > <binding name="value" value="getCapitalized('a:b')"/> > </component> > Then it will output "getCapitalized('a:b')". That is, it is treating it as a > literal, not an ognl. > This is because the BindingSource is misled by the colon in 'a:b' to believe > that > the binding prefix "getCapitalized('a". So the prefix is unknown. Then it is > treating > unknown prefix as literal: > public class BindingSourceImpl implements BindingSource > { > public IBinding createBinding(IComponent component, String > bindingDescription, > String reference, String defaultPrefix, Location location) > { > String prefix = defaultPrefix; > String path = reference; > int colonx = reference.indexOf(':'); > if (colonx > 1) //Step1: blindingly looking for a colon > { > prefix = reference.substring(0, colonx); > if (_factoryMap.containsKey(prefix)) > path = reference.substring(colonx + 1); > } > BindingFactory factory = (BindingFactory) _factoryMap.get(prefix); > //Step2: unknown prefix > if (factory == null) > factory = _literalBindingFactory; //Step3: treat unknown prefix > as literal > return factory.createBinding(component, bindingDescription, path, > location); > } > } > I'd suggest that the prefix should be checked to see if it contains alphabet > chars only. If yes, go > ahead with the existing logic. If not, it should be treated as no prefix is > provided (so the default > prefix should be used). For an unknown prefix, the existing logic can still > be applied (or should > throw an exception?). -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
