ognl can be easily added as a binding prefix, however expect some features to not work because tapestry in some occasions needs to know in advance type that the expression will return (and this is statically, when bindings are prepared)
I think I saw that ognl has methods that calculate return type for the expression ... read this: http://wiki.apache.org/tapestry/Tapestry5HowToAddBindingPrefix I didn't put the ognl example because it seems unwanted in T5 (although byte code optimizer was introduced and it performs very well) here are classes you'll need to get it running /** * */ package test.tapestry.services; import java.util.Map; import ognl.Node; import ognl.Ognl; import ognl.OgnlException; import ognl.TypeConverter; import org.apache.tapestry.ComponentResources; import org.apache.tapestry.internal.bindings.AbstractBinding; import org.apache.tapestry.ioc.Location; import org.apache.tapestry.ioc.internal.util.TapestryException; public class OgnlBinding extends AbstractBinding{ private final Object _root; private final Object _compiledExpression; private final String _expression; private final Location _location; private Map _defaultContext; public OgnlBinding(final ComponentResources resources, final String expression, final Location location, TypeConverter typeConverter) throws OgnlException { _root = resources.getComponent(); _compiledExpression = Ognl.parseExpression(expression); _expression = expression; _location = location; _defaultContext = Ognl.createDefaultContext(_root, null, typeConverter); } public Object get(){ try{ return Ognl.getValue(_compiledExpression, _defaultContext, _root); }catch(Throwable t){ throw new TapestryException("ERROR evaluating expression: "+_expression,_location, t); } } @Override public void set(final Object value) { try{ Ognl.setValue(_compiledExpression, _defaultContext, _root, value); }catch(Throwable t){ throw new TapestryException("ERROR evaluating expression: "+_expression,_location, t); } } @Override public boolean isInvariant() { return false; } @Override public Class<Object> getBindingType() { return Object.class; } } package test.tapestry.services; import ognl.OgnlException; import ognl.TypeConverter; import org.apache.tapestry.Binding; import org.apache.tapestry.ComponentResources; import org.apache.tapestry.ioc.Location; import org.apache.tapestry.ioc.internal.util.TapestryException; import org.apache.tapestry.services.BindingFactory; /** * Implementation of the ognl: binding prefix -- the expression is passed to ognl library, * and the component is set as context for the code */ public class OgnlBindingFactory implements BindingFactory { private final TypeConverter _typeConverter; public OgnlBindingFactory(TypeConverter typeConverter){ _typeConverter = typeConverter; } public Binding newBinding(String description, ComponentResources container, ComponentResources component, String expression, Location location) { try { return new OgnlBinding(container, expression, location, _typeConverter); } catch (OgnlException e) { throw new TapestryException(e.getMessage(),location,e); } } } package test.tapestry.services; import java.lang.reflect.Member; import java.util.Map; import ognl.TypeConverter; import org.apache.tapestry.ioc.services.TypeCoercer; public class OgnlTypeConverter implements TypeConverter{ private final TypeCoercer _coercer; public OgnlTypeConverter(TypeCoercer coercer){ _coercer = coercer; } public Object convertValue(Map context, Object target, Member member, String propertyName, Object value, Class toType) { return _coercer.coerce(value, toType); } } On Nov 16, 2007 3:52 PM, Massimo Lusetti <[EMAIL PROTECTED]> wrote: > On Nov 16, 2007 1:53 PM, Chris Lewis <[EMAIL PROTECTED]> wrote: > > > Perhaps this is a horrible idea, but if so I think it is transitive and > > the actual bad idea is having an expression language at all. Its > > certainly true that with such power one has enough rope to hang oneself, > > at least from the view point of what a 'view' should be able to do. > > Thoughts? > > I've never used the whole power of OGNL during T4 days, always used it > as a simple binding language. > So by me there's no interest in having OGNL of any other scrpting > language inside T5. > > Just my .02 EURO. > > -- > Massimo > http://meridio.blogspot.com > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > >