|
From: <rod...@in...> - 2003-07-10 21:19:21
|
>I'm working on a TilesViewResolver and accompanying TilesView (extending JstlView). Besides the fact that I'm curious to see if I took the correct approach, are you interested in integrating it somehow in some contrib package or something...? Yes, this sounds interesting. Because it's so easy to implement views with Spring we probably need to think about how to organize things. Or maybe just in the main source tree and wear the dependencies? |
|
From: <jue...@we...> - 2003-07-11 06:03:08
|
SGkgQWxlZiwNCiANCkFjdHVhbGx5IEkndmUgbG9va2VkIGludG8gVGlsZXMgKGluY2x1ZGluZyBp dHMgc291cmNlIGNvZGUpIHNvbWUgd2Vla3MgYWdvLCBhbmQgaGFkIHRvIGZpbmQgb3V0IHRoYXQg aXQncyBxdWl0ZSBoZWF2aWx5IG1lcmdpbmcgd2l0aCBTdHJ1dHMgdG9vLiBJIGxpa2UgdGhlIGlk ZWEgb2YgVGlsZXMsIGJ1dCBJIGRvbid0IGxpa2UgdGhhdCBzdHJvbmcgU3RydXRzIGRlcGVuZGVu Y2llcy4gT2YgY291cnNlLCBJIHdlbGNvbWUgYSBTcHJpbmcgVGlsZXNWaWV3IHRoYXQgbWFuYWdl cyB0byBvdmVyY29tZSB0aGUgbGF0dGVyIQ0KIA0KQW55d2F5LCBJIGRvbid0IGtub3cgaWYgeW91 J3ZlIG5vdGljZWQsIGJ1dCB3ZSBhbHJlYWR5IGhhdmUgYSBWZWxvY2l0eVZpZXcsIGEgWHNsdFZp ZXcsIGEgUGRmVmlldywgYW5kIGFuIEV4Y2VsVmlldy4gQWxsIHRob3NlIHRoaXJkIHBhcnR5IGxp YnJhcmllcyBhcmUgaW4gQ1ZTLCBhdCBsZWFzdCB0aGUgbmVjZXNzYXJ5IG9uZXMsIGJ1dCB3ZSBk b24ndCBpbnRlbmQgdG8gc2hpcCB0aGVtIGluIGRpc3RyaWJ1dGlvbnMuIFdlIGRvbid0IG1pbmQg c29tZSBsaWIgbWVnYWJ5dGVzIHRoZXJlIGluIENWUyA6LSkNCiANClNvIEknbSBpbmNsaW5lZCB0 byBwdXQgdGhlIFRpbGVzIGludGVncmF0aW9uIGluIHRoZSBtYWluIHNvdXJjZSB0cmVlIHRvbywg dW5kZXIgd2ViL3NlcnZsZXQvdmlldy90aWxlcy4gSWYgd2Ugc2VwYXJhdGUgdGhpcmQgcGFydHkg dmlldyBpbXBsZW1lbnRhdGlvbnMgaW4gZ2VuZXJhbCwgd2Ugd291bGQgaGF2ZSB0byBhcHBseSB0 aGF0IHRvIFZlbG9jaXR5LCBYU0xULCBQREYsIGFuZCBFeGNlbCB0b28uIEZvciB0aGUgbW9tZW50 LCBsZXQncyBrZWVwIGFsbCBvZiB0aG9zZSBpbiB0aGUgbWFpbiBzb3VyY2VzLg0KIA0KQlRXLCBo b3cgZXhhY3RseSBkb2VzIHlvdXIgVGlsZXNWaWV3IHdvcms/IEFzIGZhciBhcyBJIGtub3csIFRp bGVzIGNhbiBiZSBsYXJnZWx5IHVzZWQgYXMgdGFnIGxpYnJhcnksIHdpdGhvdXQgdGhlIG5lZWQg Zm9yIGRlZGljYXRlZCBpbnRlZ3JhdGlvbi4gVGhlIG1vc3QgaW50ZXJlc3RpbmcgdXNhZ2UgZm9y IGludGVncmF0aW9uIGlzIHByb2JhYmx5IHdpdGggY29udGVudCBkZWZpbml0aW9ucyAtIGEgbGEg aHR0cDovL3d3dy5qYXZhd29ybGQuY29tL2phdmF3b3JsZC9qdy0wMS0yMDAyL2p3LTAxMDQtdGls ZXN0cnV0Lmh0bWwgU29sdXRpb24gNiwgYnV0IHdpdGggU3ByaW5nIGluc3RlYWQgb2YgU3RydXRz LiBEbyB5b3UgaW50ZW5kIHRvIG9mZmVyIGEgc29sdXRpb24gZm9yIHRoaXMsIGJhc2ljYWxseSBh IFNwcmluZyBWaWV3IHRoYXQgcmVuZGVycyBzdWNoIGNvbnRlbnQgZGVmaW5pdGlvbnMgdGhhdCBj b25zaXN0IG9mIFRpbGVzIGNvbXBvbmVudHM/DQogDQpSZWdhcmRpbmcgY29kZSBzdHJ1Y3R1cmUs IEknbSBub3QgZW50aXJlbHkgc3VyZSB3aHkgeW91IG5lZWQgYSBUaWxlc1ZpZXdSZXNvbHZlciAt IHdoYXQgcmVzb2x1dGlvbiBmdW5jdGlvbmFsaXR5IGRvZXMgaXQgYWRkPyBXb3VsZG4ndCBUaWxl c1ZpZXcgaW5zdGFuY2VzLCBlYWNoIGRlZmluaW5nIGEgY29udGVudCBwYWdlIGFzIGFycmFuZ2Vk IFRpbGVzIGNvbXBvbmVudHMsIHdvcmsgdG9vIHdoZW4gdGhleSBnZXQgY29uZmlndXJlZCB2aWEg UmVzb3VyY2VCdW5kbGVWaWV3UmVzb2x2ZXIgb3IgWG1sVmlld1Jlc29sdmVyPw0KIA0KSSdtIGxv b2tpbmcgZm9yd2FyZCB0byB5b3VyIGNvZGUhIFRoYW5rcyBmb3IgeW91ciBlZmZvcnRzIQ0KIA0K UmVnYXJkcywNCkp1ZXJnZW4NCiANCiANCg0KCS0tLS0tVXJzcHLDvG5nbGljaGUgTmFjaHJpY2h0 LS0tLS0gDQoJVm9uOiBBbGVmIEFyZW5kc2VuIFttYWlsdG86YWxlZkBqdGVhbS5ubF0gDQoJR2Vz ZW5kZXQ6IERvIDEwLjA3LjIwMDMgMjM6MzcgDQoJQW46IHJvZC5qb2huc29uQGludGVyZmFjZTIx LmNvbSANCglDYzogc3ByaW5nZnJhbWV3b3JrLWRldmVsb3BlckBsaXN0cy5zb3VyY2Vmb3JnZS5u ZXQgDQoJQmV0cmVmZjogUkU6IFtTcHJpbmdmcmFtZXdvcmstZGV2ZWxvcGVyXSBRdWVzdGlvbnMg YW5kIGFkZGl0aW9ucw0KCQ0KCQ0KDQoJPlllcywgdGhpcyBzb3VuZHMgaW50ZXJlc3RpbmcuIEJl Y2F1c2UgaXQncyBzbyBlYXN5IHRvDQoJaW1wbGVtZW50IHZpZXdzIHdpdGggU3ByaW5nIHdlIHBy b2JhYmx5IG5lZWQgdG8gdGhpbmsgYWJvdXQNCglob3cgdG8gb3JnYW5pemUgdGhpbmdzLiBPciBt YXliZSBqdXN0IGluIHRoZSBtYWluIHNvdXJjZSB0cmVlDQoJYW5kIHdlYXIgdGhlIGRlcGVuZGVu Y2llcz8NCgkNCglJIHdvdWxkIGtlZXAgdGhlbSBzZXBhcmF0ZSAoSSBldmVuIGRvbid0IGxpa2Ug aXQgdGhhdCBJIGhhZCB0byBnZXQgaW50bw0KCXRoZSBTdHJ1dHMgc291cmNlY29kZSB0byBmaW5k IG91dCB0aGluZ3MsIHdoZW4gaGFsZiBhIHllYXIgYWdvLCBUaWxlcw0KCWp1c3QgdXNlZCB0byBi ZSBzZXBhcmF0ZSBwYWNrYWdlLCB0aGF0IGRlbGl2ZXJlZCBpdHMgb3duIHBsdWdpbiBmb3INCglT dHJ1dHMpLiBJZiB0aGVyZSdzIFZlbG9jaXR5IHJlc29sdmVyIGxhdGVyIG9uIGFuZCBhIFdlYk1h Y3JvIHJlc29sdmVyDQoJYW5kIHRoaW5ncyBsaWtlIHRoYXQsIHlvdSdsbCBlbmQgdXAgd2l0aCB0 ZW5zIG9mIG1lZ2FieXRlcyBvZiBqYXJzLi4uDQoJQWxzbywgd2hlbiB0aGVyZSdzIGEgc3RhbmRh cmQgc3RydWN0dXJlIGZvciAnYWRkb25zJywgaXQncyBlYXNpZXIgdG8NCglkb2N1bWVudCB0aGVt IEkgdGhpbmssIGFuZCBwZW9wbGUgY2FuIGp1c3QgcGljayB3aGF0IHRoZXkgbGlrZS4uLiBXZWxs LA0KCXdoYXRldmVyLCBsZXQncyBqdXN0IGZpcnN0IGZpbmlzaCBpdCA7LSkuDQoJDQoJSSd2ZSBi ZWVuIHRlc3RpbmcgYWxsIG92ZXIgd2l0aCB0aGUgVGlsZXNSZXNvbHZlciB0aGluZ3ksIGFuZCBp dCdzDQoJd29ya2luZyBxdWl0ZSB3ZWxsLiBJIHdhbnQgdG8gdGVzdCBpdCBhIGxpdHRsZSBtb3Jl IHRvIHNlZSBpZiBldmVyeQ0KCWZlYXR1cmUgVGlsZXMgaGFzIHdvcmtzIGFuZCB0aGVuIC0gYWZ0 ZXIgc29tZSBtb3JlIHJlYWRhYmxlDQoJZG9jdW1lbnRhdGlvbiAtIEknbGwgc2VuZCBpdC4uLg0K CQ0KCUNoZWVycywNCgkNCglBbGVmDQoJDQoJDQoJDQoJDQoJLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KCVRoaXMgU0YuTmV0IGVtYWlsIHNw b25zb3JlZCBieTogUGFyYXNvZnQNCglFcnJvciBwcm9vZiBXZWIgYXBwcywgYXV0b21hdGUgdGVz dGluZyAmIG1vcmUuDQoJRG93bmxvYWQgJiBldmFsIFdlYktpbmcgYW5kIGdldCBhIGZyZWUgYm9v ay4NCgl3d3cucGFyYXNvZnQuY29tL2J1bGxldHByb29mYXBwczENCglfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KCVNwcmluZ2ZyYW1ld29yay1kZXZlbG9w ZXIgbWFpbGluZyBsaXN0DQoJU3ByaW5nZnJhbWV3b3JrLWRldmVsb3BlckBsaXN0cy5zb3VyY2Vm b3JnZS5uZXQNCglodHRwczovL2xpc3RzLnNvdXJjZWZvcmdlLm5ldC9saXN0cy9saXN0aW5mby9z cHJpbmdmcmFtZXdvcmstZGV2ZWxvcGVyDQoJDQoNCg== |
|
From: Alef A. <al...@jt...> - 2003-07-11 09:57:42
Attachments:
TilesViewResolver.java
TilesView.java
|
<quote>BTW, how exactly does your TilesView work? As far as I know, Tiles can be largely used as tag library, without the need for dedicated integration. The most interesting usage for integration is probably with content definitions - a la http://www.javaworld.com/javaworld/jw-01-2002/jw-0104-tilestrut.html Solution 6, but with Spring instead of Struts. Do you intend to offer a solution for this, basically a Spring View that renders such content definitions that consist of Tiles components?</quote> Exactly! That's what it already does. I've made the TilesViewResolver to be configurable from the xxx-servlet.xml (see code below). It searches for the factory and stuff. The TilesView basically is the same as the integration in Struts, where you can 'forward' to a definition using the ActionForward. It's kind of simple. The only thing that needs to be tested a little bit is the Tiles Controller concept (where you can attach a controller to each tile, that retrieve data for this specific tile). I hardly ever use this, but well, other people might. <quote>Regarding code structure, I'm not entirely sure why you need a TilesViewResolver - what resolution functionality does it add? Wouldn't TilesView instances, each defining a content page as arranged Tiles components, work too when they get configured via ResourceBundleViewResolver or XmlViewResolver?</quote> Hmm, you might be right here... I'll have a look into that... Anyway, I've attached the files like they are right now... Just FYI. Don't mind the packagenames and stuff, documentation still needs to be done... Any suggestions? Always welcome... <quote>I'm looking forward to your code! Thanks for your efforts!</quote> No problem, It's a cool framework, worth of adding features in order to make it fit my (and other's) needs more... ---- xxx-servlet.xml ---- <bean id="viewResolver" class="jteam.jbosssupport.web.util.TilesViewResolver"> <property name="factoryClass"> <value>org.apache.struts.tiles.xmlDefinition.I18nFactorySet</value> </property> <property name="definitions"> <props> <!-- this is a little weird, definitionfiles mapped to descriptions --> <prop key="/WEB-INF/defs/general.xml">The General resources</prop> <prop key="/WEB-INF/defs/widgets.xml">Some often used widgets</prop> <prop key="/WEB-INF/defs/administrator.xml">Some often used widgets</prop> <prop key="/WEB-INF/defs/customer.xml">Customer definitions</prop> <prop key="/WEB-INF/defs/templates.xml">Often used templates</prop> </props> </property> </bean> |
|
From: Alef A. <al...@jt...> - 2003-07-10 21:36:26
|
>Yes, this sounds interesting. Because it's so easy to implement views with Spring we probably need to think about how to organize things. Or maybe just in the main source tree and wear the dependencies? I would keep them separate (I even don't like it that I had to get into the Struts sourcecode to find out things, when half a year ago, Tiles just used to be separate package, that delivered its own plugin for Struts). If there's Velocity resolver later on and a WebMacro resolver and things like that, you'll end up with tens of megabytes of jars... Also, when there's a standard structure for 'addons', it's easier to document them I think, and people can just pick what they like... Well, whatever, let's just first finish it ;-). I've been testing all over with the TilesResolver thingy, and it's working quite well. I want to test it a little more to see if every feature Tiles has works and then - after some more readable documentation - I'll send it... Cheers, Alef |