struts-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Gagnon <>
Subject Re: Why TagUtils.instance is final static. That cause me a lot of problem.. Is a small change can be done ...?
Date Wed, 14 Jun 2006 19:24:24 GMT
> The problem is that these things were designed before the 
> IOC/Dependency Injection design patterns had really infected the minds 
> of open source architects, and there was no standard way to have a 
> framework "discover" implementations of various interfaces. Add that 
> to the fact that no one had brought up any use cases for different 
> implementation classes and you end up with an incomplete solution.
> Have you got any suggestions about how the tag code would locate a 
> TagUtils implementation?  Actually, for taglibs, it's a little easier, 
> because you can assume access to a pageContext almost anywhere, which 
> means you can look up a TagUtils implementation in application scope.  
> Perhaps a static method on TagUtils which took a ServletContext (or 
> perhaps even a PageContext) and looked under a well-known key for a 
> TagUtils instance or an implementation class name, and if it couldn't 
> find it, reverted to returning the conventional one?
If you offer a way to specify the implementation I think a 
registerInstance method will be the best way. 

In the ActionServlet.initOther method struts register conversion with 
the ConvertUtils object:

ConvertUtils.register(new BigDecimalConverter(null), BigDecimal.class);

At least it's the way it's done in 1.2

We could have a TagUtils.registerInstance() method that will take a 
TagUtils instance.  We could create this instance from a struts property. 

I don't know if that make sense in the actual version of struts thought?

Or as I said at least put the instance variable as PROTECTED and NOT 
final.  This way I will be able to inherit from the TagUtils class and 
change the instance (This method is not fully clean but having the 
instance PRIVATE FINAL doens`nt make sense anyway (for me at least).

Best Regards
/David Gagnon

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message