Re: Persistance
On Wed, Jan 14, 2009 at 1:39 AM, Geoff Callender < geoff.callender.jumpst...@gmail.com> wrote: > It would be great if Tapestry provided a really nice clear solution to > conversation state (and continuations), but in the meantime the workarounds > are actually not all that hard. Have you looked at the 3 Wizard examples > and the Conversations List at > http://jumpstart.doublenegative.com.au:8080/jumpstart/ ? I know, and obviously I've looked at your examples; where else would one learn T5 from :) Continuations actually have very little to do with it when the only problem I really want to solve is to have a scope longer than request but one that doesn't pollute the session till it expires. While continuations and RIFE is very innovative, it really is targeted to solve a different problem than what I'm after. > One modification I'd like to make to the Wizards is to defer assigning a > conversation id until you're on your way from the first page to the second > page. > Howard's talking about somehow making 5.1 work with Spring WebFlow. I'll > follow that one with great interest, but I'll be wearing my sceptics hat as > I fear that the SWF medicine might be worse than the problem it's trying to > solve. > Agree, flows complicate things and don't offer a generic solution to this problem. I've used SWF (and tried out Seam as well) but I really don't want to force developers to require configuring flows consisting of multiple pages when most of the time you just want that object to survive through a few requests so you can display the validation errors and/or the success message with the data the object contains. Personally I'm sold on ajax to a point where I don't see a need to worry about back buttons or design operation logic in a traditional way with multiple pages for a single operation/conversation. Pages/urls are useful for differentiating between separate logical operations like edit profile or search but if you click on back button you should go to the previous operation, not to a previous stage within the same operation. Wizards are of course a little different; you may want to even independently store the whole state once you are half-way through the wizard and go back and forth between the stages (where continuations are also very useful), but the conversations in my mind a really short-lived, happening for example on a single page/stage/url of a wizard. Thanks Geoff for the links as well; if we have any other threads about this on the Tapestry mailing list, please continue linking them here. Kalle > Here are some good discussions of the problem: > > > http://www.developertutorials.com/tutorials/java/develop-complex-web-applications-050422/page1.html > > http://rifers.org/blogs/gbevin/2005/4/11/continuations_continuations >http://www.artima.com/forums/flat.jsp?forum=226&thread=197351 > > http://debasishg.blogspot.com/2006/07/spring-web-flow-declarative-web.html > > Geoff > > > On 14/01/2009, at 5:25 PM, Kalle Korhonen wrote: > > I don't know if there's a better thread for discussing page scope and >> conversation (if you know other threads, please link them in) but I'm just >> doing research on this topic for supporting conversations in Trails. >> Shortly, I'm hoping that it'd be possible to have a generic implementation >> for conversations by dictating that a conversation should always happen on >> a >> single "page" or url with asynchronous calls. From my point of view, >> assuming that only the beginning of a conversation can be bookmarkable and >> that a conversation has one-to-one mapping with a url are reasonable >> conventions and will greatly simplify the required logic (compared to >> xml-based navigation flow configurations). These conversations could also >> be >> cleaned from session before the session expires and can have individual >> timeout values. >> >> Regarding the problem with multiple pages that others have already pointed >> out, with or without using cookies the urls need to be different (so the >> page contexts can be kept separate). Typically when editing a single >> object, >> you don't even want to allow multiple windows and this can be easily dealt >> with cookies transparently to the user. The only good example of where >> multi-window support is actually useful that I can come up with is search >> (say when you are trying to find the best flight to a destination). There, >> I >> wouldn't even like to necessary have a conversation identifier as part of >> the url, but as a parameter (e.g. /travelsearch?conversationId=123) since >> it's not meaningful to bookmark a url with a conversationId in it, but T5 >> doesn't allow one to easily manipulate urls and the page context is >> extremely handy way of making sure all subsequent action requests (from >> the >> same page) are participating in the same conversation. However, one of the >> issues with T5 I haven't been able to satisfactorily solve is forcing a >> page >> to use an additional context paramete
tapestry.formos.com is back up
The Tapestry continuous integration build server, tapestry.formos.com, is now back online. I've run a nightly build, so you can see latest 5.1 snapshots in the maven snapshot repository. There may be some further disruption as I set up a number of additional services on tapestry.formos.com: SVN, JIRA and Confluence. -- Howard M. Lewis Ship Creator Apache Tapestry and Apache HiveMind - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: is T4 dead ?
Any reason you couldn't just use one of the multitude of JS frameworks? jQuery works very well for this. -- Kevin On Wed, Jan 14, 2009 at 1:25 PM, Ken in nashua wrote: > > I still am using T4 with dojo-0.4.3 and the tapestry script eFrastructure > that tacos has taken advantage of. > > That should indicate a boat load plenty of loyalty... and thank. > > It would be nice to see some humble support for these though. > > One of my most recent peeves was the lack of a coordinate api for determining > where a dom is actually positioned... I had to drill into my layers and get > the ID's and calculate each position recursively up the dom tree... and > create my own geometry mgt api for convenient calculations. > - cheers > Best regards Ken in nashua > _ > Windows Live™ Hotmail(R): Chat. Store. Share. Do more with mail. > http://windowslive.com/explore?ocid=TXT_TAGLM_WL_t1_hm_justgotbetter_explore_012009 - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
RE: is T4 dead ?
I still am using T4 with dojo-0.4.3 and the tapestry script eFrastructure that tacos has taken advantage of. That should indicate a boat load plenty of loyalty... and thank. It would be nice to see some humble support for these though. One of my most recent peeves was the lack of a coordinate api for determining where a dom is actually positioned... I had to drill into my layers and get the ID's and calculate each position recursively up the dom tree... and create my own geometry mgt api for convenient calculations. - cheers Best regards Ken in nashua _ Windows Live™ Hotmail®: Chat. Store. Share. Do more with mail. http://windowslive.com/explore?ocid=TXT_TAGLM_WL_t1_hm_justgotbetter_explore_012009
Re: Persistance
On Wed, Jan 14, 2009 at 1:29 AM, Ville Virtanen wrote: > I would try to achieve something like that using: > Custom PersistentFieldStrategy > ( > http://tapestry.apache.org/tapestry5/apidocs/org/apache/tapestry5/services/PersistentFieldStrategy.html > ) > Custom LinkFactoryListener > ( > http://tapestry.apache.org/tapestry5/apidocs/org/apache/tapestry5/internal/services/LinkFactoryListener.html > ) > Custom ComponentEventRequestFilter + PageRenderRequestFilter > ( > http://tapestry.apache.org/tapestry5/apidocs/org/apache/tapestry5/services/ComponentEventRequestFilter.html > ) > Moi moi Ville, thanks for the links. A custom PersistentFieldStrategy is certainly something I'm currently looking into. > Then in theory you can code the conversation id to all links and forms, use > the filters to intercept the request and get the id back and finally use > the > id to retrieve the value from ConversationManager via the CustomPersistence > strategy. The persistence strategy may use ehcache or something like that > to > actually persist the objects. The request object can be used to transmit > the > conversation id from the filter to the persistence strategy? I think its a minor detail whether the id is part of the url a parameter. EHCache doesn't really come to play, I actually want to keep the conversation as part of the session (you log out, it'll end all conversations). In my view, users would have lots of short-lived conversations going on, each using session but so they don't step on each other. This implementation could also be per client tab and not at all dependent of > the session etc. >From my opinion, a session is one of the biggest things going for Java webapps compared to two-tier db-backed architectures like PHP, we just have to learn to use it the right way. Kalle > Kalle Korhonen-2 wrote: > > > > I don't know if there's a better thread for discussing page scope and > > conversation (if you know other threads, please link them in) but I'm > just > > doing research on this topic for supporting conversations in Trails. > > Shortly, I'm hoping that it'd be possible to have a generic > implementation > > for conversations by dictating that a conversation should always happen > on > > a > > single "page" or url with asynchronous calls. From my point of view, > > assuming that only the beginning of a conversation can be bookmarkable > and > > that a conversation has one-to-one mapping with a url are reasonable > > conventions and will greatly simplify the required logic (compared to > > xml-based navigation flow configurations). These conversations could also > > be > > cleaned from session before the session expires and can have individual > > timeout values. > > > > Regarding the problem with multiple pages that others have already > pointed > > out, with or without using cookies the urls need to be different (so the > > page contexts can be kept separate). Typically when editing a single > > object, > > you don't even want to allow multiple windows and this can be easily > dealt > > with cookies transparently to the user. The only good example of where > > multi-window support is actually useful that I can come up with is search > > (say when you are trying to find the best flight to a destination). > There, > > I > > wouldn't even like to necessary have a conversation identifier as part of > > the url, but as a parameter (e.g. /travelsearch?conversationId=123) since > > it's not meaningful to bookmark a url with a conversationId in it, but T5 > > doesn't allow one to easily manipulate urls and the page context is > > extremely handy way of making sure all subsequent action requests (from > > the > > same page) are participating in the same conversation. However, one of > the > > issues with T5 I haven't been able to satisfactorily solve is forcing a > > page > > to use an additional context parameter. I've tried with returning the > same > > page from onActivate then setting a conversation id in onPassivate, which > > works in principle but only if I persist the conversation id which kind > of > > defies the point. Anybody happen to have a good, generic solution for > > automatically adding parameters to the activation context (so they are > > visible in the url)? I'd be also interested to know if anybody has > > thoughts > > on these ideas or is further along in providing a generic implementation > > for > > conversations in T5. > > > > Kalle > > > > > > On Fri, Dec 12, 2008 at 11:00 AM, Daniel Jue wrote: > > > >> In the past I manually implemented this behavior by mixing server side > >> and > >> client side persistence. My code-fu was probably not very elegant. > >> > >> In my case, a user could open a report page after filling out a page of > >> variables. These report pages would open in a new browser window/tab. > So > >> instantly you have the situation where two reports can be open but use > >> different data. I would store a client side string on each report page, > >> and >
Re: t5: accessing a text file under resources
Thanks, I found something similar: public InputStream getStream() throws IOException { String fn = this.getClass().getResource("/robots.txt").getFile(); return new FileInputStream(fn); } Tapestry Infodea wrote: > > Hi, > try something like this: > > private static final String WEB_BASED_PATH = "resources/robots.txt"; > > -- View this message in context: http://www.nabble.com/t5%3A-accessing-a-text-file-under-resources-tp21458825p21460394.html Sent from the Tapestry - User mailing list archive at Nabble.com. - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: t5: accessing a text file under resources
Hi, try something like this: private static final String WEB_BASED_PATH = "resources/robots.txt"; try { InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(WEB_BASED_PATH); DataInputStream din = new DataInputStream(is); BufferedReader br = new BufferedReader(new InputStreamReader(din)); String line; while ((line = br.readLine()) != null) { //TODO ... } din.close(); } catch (Exception e) { throw new TapestryException(e.getMessage(), resources.getLocation(), e); } Angelo Chen ha scritto: Hi, I put a robots.txt under resources, it is under classes after build, then I'd like to access it from the code: private final class RobotsTxtStreamResponse implements StreamResponse { public InputStream getStream() throws IOException { return new FileInputStream("robots.txt"); } } it does not work, any idea how to access that? thanks - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: Tapestry Nightly
I finally got Ubuntu installed on the box yesterday, should have Bamboo up and running fairly soon. On Wed, Jan 14, 2009 at 2:49 AM, Martin Papy wrote: > > Hi, > > It seem's that the Nightly site / builds / maven etc are down for some days > now... > > Is there any previewed date for their come back ? > > Regards, > > Martin > -- > View this message in context: > http://www.nabble.com/Tapestry-Nightly-tp21453644p21453644.html > Sent from the Tapestry - User mailing list archive at Nabble.com. > > > - > To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org > For additional commands, e-mail: users-h...@tapestry.apache.org > > -- Howard M. Lewis Ship Creator Apache Tapestry and Apache HiveMind - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: example BaseURLSource: T5
Note that you can inject HttpServletRequest instead of RequestGlobals. On Wed, Jan 14, 2009 at 3:50 AM, Onno Scheffers wrote: > This version prepends http or https before the url. In production mode it > builds on a fixed url and in development mode it returns whatever you used > to get to the page (localhost? IP?) and adds the right port-number to it. It > is a stripped down version of my actual implementation, since that > application can be accessed in different modes from different urls so I hope > I didn't strip out to much :o) > > public class SSLBaseURLSource implements BaseURLSource { > private boolean production; > private RequestGlobals requestGlobals; > > public SSLBaseURLSource( > final boolean production, > final RequestGlobals requestGlobals) { > this.production = production; > this.requestGlobals = requestGlobals; > } > > public String getBaseURL(final boolean secure) { > StringBuilder result = new StringBuilder(secure ? "https://"; : > "http://";); > if(production) { > result.append("www.myurl.com"); > } else { > String requestURL = > requestGlobals.getHTTPServletRequest().getRequestURL().toString(); > int index = requestURL.indexOf("://"); > if(index > 0) { >requestURL = requestURL.substring(index + 3); > } > index = requestURL.indexOf(":"); > if(index > 0) { >requestURL = requestURL.substring(0, index + 1); > } > result.append(requestURL).append(secure ? "8443" : "8080"); > } > return result.toString(); > } > } > > And then from the AppModule: > public static void contributeAlias( > @Symbol(SymbolConstants.PRODUCTION_MODE) final boolean > productionMode, > @InjectService("ApplicationStateManager") final > ApplicationStateManager applicationStateManager, > @InjectService("RequestGlobals") final RequestGlobals > requestGlobals, > final Configuration configuration) { > AliasContribution aliasContribution = new > AliasContribution( >BaseURLSource.class, >new SSLBaseURLSource(productionMode, requestGlobals) > ); > configuration.add(aliasContribution); > } > > Hope this helps. > > regards, > > Onno Scheffers > > > On Wed, Jan 14, 2009 at 12:01 PM, peibel wrote: > >> >> >> Hi, >> >> Someone has an example using BaseURLSource, is very important, I'm tired >> and >> I don´t get going from http to https from an http link to the page. >> >> thanks for your help >> -- >> View this message in context: >> http://www.nabble.com/example-BaseURLSource%3A-T5-tp21453809p21453809.html >> Sent from the Tapestry - User mailing list archive at Nabble.com. >> >> >> - >> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org >> For additional commands, e-mail: users-h...@tapestry.apache.org >> >> > -- Howard M. Lewis Ship Creator Apache Tapestry and Apache HiveMind - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: T5: Jump to Specific Page with Grid
:) No problem. I was just playing with the pager yesterday because I had a problem with the page persisting between searches. If I did a search and went to page three and then performed a new search it started on page three. I wanted the new search to start on page one so I used the currentPage property to force it to page one if it was a new search. bobheck wrote: Thank you Jayson !!! That was insanely simple. Nothing like spending a day and a half trying to do something only to find out the answer is to set a property. Sigh. (Walks off, muttering "You are a good coderpeople like youyou are valuable...") Jayson Pierringer wrote: Bob, You can use the setCurrentPage method of your grid component. myGrid.setCurrentPage(1) - Jayson bobheck wrote: I am trying to do something that seems simple, but I am stumped. The grid pager renders links that look like this to jump to a specific page pagepath/pagename.grid.pager/NN where NN is the page number the link jumps directly to I have a large list, and I want users to be able to type a number in a Textfield and then return the grid back with that number as the starting page, rather than keep hitting links to get where they want. Some data is over 1000 pages and it takes many clicks. You can jump to a specific page by typing the URL with the .grid.pager/NN appended, but I have not found a way to do this programmatically. I tried returning the string of the relative url but got an Exception - Tapestry does not like the .grid.pager/NN when returned as an Object from an @OnEvent. I do not wish to give a fully qualified path in the return, I want to use relative/friendly urls. Any help would be appreciated. - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: T5: Jump to Specific Page with Grid
Thank you Jayson !!! That was insanely simple. Nothing like spending a day and a half trying to do something only to find out the answer is to set a property. Sigh. (Walks off, muttering "You are a good coderpeople like youyou are valuable...") Jayson Pierringer wrote: > > Bob, > > You can use the setCurrentPage method of your grid component. > myGrid.setCurrentPage(1) > > - Jayson > > bobheck wrote: >> I am trying to do something that seems simple, but I am stumped. >> >> The grid pager renders links that look like this to jump to a specific >> page >> >> pagepath/pagename.grid.pager/NN >> >> where NN is the page number the link jumps directly to >> >> I have a large list, and I want users to be able to type a number in a >> Textfield and then return the grid back with that number as the starting >> page, rather than keep hitting links to get where they want. Some data >> is >> over 1000 pages and it takes many clicks. >> >> You can jump to a specific page by typing the URL with the .grid.pager/NN >> appended, but I have not found a way to do this programmatically. I >> tried >> returning the string of the relative url but got an Exception - Tapestry >> does not like the .grid.pager/NN when returned as an Object from an >> @OnEvent. >> >> I do not wish to give a fully qualified path in the return, I want to use >> relative/friendly urls. >> >> Any help would be appreciated. >> > > > > - > To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org > For additional commands, e-mail: users-h...@tapestry.apache.org > > > -- View this message in context: http://www.nabble.com/T5%3A-Jump-to-Specific-Page-with-Grid-tp21447583p21457848.html Sent from the Tapestry - User mailing list archive at Nabble.com. - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: T5: Jump to Specific Page with Grid
Bob, You can use the setCurrentPage method of your grid component. myGrid.setCurrentPage(1) - Jayson bobheck wrote: I am trying to do something that seems simple, but I am stumped. The grid pager renders links that look like this to jump to a specific page pagepath/pagename.grid.pager/NN where NN is the page number the link jumps directly to I have a large list, and I want users to be able to type a number in a Textfield and then return the grid back with that number as the starting page, rather than keep hitting links to get where they want. Some data is over 1000 pages and it takes many clicks. You can jump to a specific page by typing the URL with the .grid.pager/NN appended, but I have not found a way to do this programmatically. I tried returning the string of the relative url but got an Exception - Tapestry does not like the .grid.pager/NN when returned as an Object from an @OnEvent. I do not wish to give a fully qualified path in the return, I want to use relative/friendly urls. Any help would be appreciated. - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: Mapping Bean For View Layout
hi guy, thanks for your help. 2009/1/14 Harald Geritzer > >> public class Teste { >> private BeanTeste bt; >> >> public Teste () { >> this.bt = new BeanTeste(); >> } >> > >getBt(); { .. } >setBt(BeanTest bt) { .. } > > >} >> > > > you can use the value property: > > maxlength="50" /> > > > > - > To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org > For additional commands, e-mail: users-h...@tapestry.apache.org > > -- Gutemberg A. Da Silva
Re: Mapping Bean For View Layout
public class Teste { private BeanTeste bt; public Teste () { this.bt = new BeanTeste(); } getBt(); { .. } setBt(BeanTest bt) { .. } } you can use the value property: - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: Mapping Bean For View Layout
when I say "view layout", I wanna say "view tie". I wanna acess one atribut of the bean across of class of tml. 2009/1/14 Thiago HP > On Wed, Jan 14, 2009 at 11:24 AM, Gutemberg A. Da Silva > wrote: > > how do I map 'bean' using the view layout? > > What do you mean by view layout? > By the way, take a look at the Tapestry forms tutorial: > http://tapestry.apache.org/tapestry5/tutorial1/forms.html > > -- > Thiago > > - > To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org > For additional commands, e-mail: users-h...@tapestry.apache.org > > -- Gutemberg A. Da Silva
Re: Mapping Bean For View Layout
On Wed, Jan 14, 2009 at 11:24 AM, Gutemberg A. Da Silva wrote: > how do I map 'bean' using the view layout? What do you mean by view layout? By the way, take a look at the Tapestry forms tutorial: http://tapestry.apache.org/tapestry5/tutorial1/forms.html -- Thiago - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: Persistance
Ok, it uses currentMillis inside the session to differentiate the conversations. It works, but as we are seasoned T5 users we expect everything to just work without all that scary java code :) - Ville Ps. Seriously I appreciate greatly your effort and just want to say Thank you. (I've learned quite a bit reading through jumpstart examples.) Geoff Callender-2 wrote: > > Try it! > > What you'll see is that if you open two tabs or windows and then start > the Wizard in each one then they will get different conversations. > This allows you, for example, to work on two orders at once. > > If, however, you start the Wizard AND then open a new tab or window > AND your browser preferences are set to open with the current URL AND > the browser is not IE or Chrome, then they will share the > conversation. I think this is reasonable because it's the preference > you have set. To avoid it, I guess some javascript would be required > to detect the situation in the new tab or window or perhaps to prevent > new tab or window being started? But maybe that's going too far? > > Geoff > > On 14/01/2009, at 10:45 PM, Ville Virtanen wrote: > >> >> But still the wizard example requires session in some form and thus >> the same >> conversation in two tabs scenario is not possible? >> >> - Ville >> >> >> Geoff Callender-2 wrote: >>> >>> It would be great if Tapestry provided a really nice clear solution >>> to >>> conversation state (and continuations), but in the meantime the >>> workarounds are actually not all that hard. Have you looked at the 3 >>> Wizard examples and the Conversations List at >>> http://jumpstart.doublenegative.com.au:8080/jumpstart/ >>> ? >>> >>> One modification I'd like to make to the Wizards is to defer >>> assigning >>> a conversation id until you're on your way from the first page to the >>> second page. >>> >>> Howard's talking about somehow making 5.1 work with Spring WebFlow. >>> I'll follow that one with great interest, but I'll be wearing my >>> sceptics hat as I fear that the SWF medicine might be worse than the >>> problem it's trying to solve. >>> >>> Here are some good discussions of the problem: >>> >>> >>> http://www.developertutorials.com/tutorials/java/develop-complex-web-applications-050422/page1.html >>> http://rifers.org/blogs/gbevin/2005/4/11/continuations_continuations >>> http://www.artima.com/forums/flat.jsp?forum=226&thread=197351 >>> >>> http://debasishg.blogspot.com/2006/07/spring-web-flow-declarative-web.html >>> >>> Geoff >>> >>> On 14/01/2009, at 5:25 PM, Kalle Korhonen wrote: >>> I don't know if there's a better thread for discussing page scope and conversation (if you know other threads, please link them in) but I'm just doing research on this topic for supporting conversations in Trails. Shortly, I'm hoping that it'd be possible to have a generic implementation for conversations by dictating that a conversation should always happen on a single "page" or url with asynchronous calls. From my point of view, assuming that only the beginning of a conversation can be bookmarkable and that a conversation has one-to-one mapping with a url are reasonable conventions and will greatly simplify the required logic (compared to xml-based navigation flow configurations). These conversations could also be cleaned from session before the session expires and can have individual timeout values. Regarding the problem with multiple pages that others have already pointed out, with or without using cookies the urls need to be different (so the page contexts can be kept separate). Typically when editing a single object, you don't even want to allow multiple windows and this can be easily dealt with cookies transparently to the user. The only good example of where multi-window support is actually useful that I can come up with is search (say when you are trying to find the best flight to a destination). There, I wouldn't even like to necessary have a conversation identifier as part of the url, but as a parameter (e.g. /travelsearch?conversationId=123) since it's not meaningful to bookmark a url with a conversationId in it, but T5 doesn't allow one to easily manipulate urls and the page context is extremely handy way of making sure all subsequent action requests (from the same page) are participating in the same conversation. However, one of the issues with T5 I haven't been able to satisfactorily solve is forcing a page to use an additional context parameter. I've tried with returning the same page from onActivate then setting a conversation id in onPassivate, which works in principle but only if I persist the conversation id which kind of defies the point. Anybody happen to ha
EJB questions about Jumpstart
OBS: I was going to send just for Geoff, but maybe someone else could know the answer. Im studing the EJB example but Im failing to make mine work. Im trying to load ClientesUsuarioFacade or ClientesUsuarioFacadeLocal (Im newbie, got a challenge that can mean use T5 in my company and also my personal projects). In the example it is used "jumpstart/PersonService/local", and Ive noticed that @PersistenceContext(unitName = "jumpstart") exists in the PersonService model, wich probably means unitname/modelname/type. In the EJBs provided to me, unitname isn't set, and the only way I found to make it work as defining th ejb in the xml and using the following functions: static public UsuariosClienteFacadeLocalExt UsuariosCliente() throws Exception{ try { Context c = new InitialContext(); return (UsuariosClienteFacadeLocalExt) c.lookup("java:comp/env/UsuariosClienteFacade"); } catch (Exception e) { throw new Exception("FacadeLocator Failure"); } } They are similars, but the address java:comp isn't friendly as the another. So, I want to find a way to make it easyer, being coding or blaming the badly done EJB. Thanks in advance -- Sidney G B Ferreira Desenvolvedor Web - Tibox Innovations
Mapping Bean For View Layout
how do I map 'bean' using the view layout? Example: public class Teste { private BeanTeste bt; public Teste () { this.bt = new BeanTeste(); } } public class BeanTeste { private String name; getName(); setName(); } -- Gutemberg A. Da Silva
Re: Persistance
Try it! What you'll see is that if you open two tabs or windows and then start the Wizard in each one then they will get different conversations. This allows you, for example, to work on two orders at once. If, however, you start the Wizard AND then open a new tab or window AND your browser preferences are set to open with the current URL AND the browser is not IE or Chrome, then they will share the conversation. I think this is reasonable because it's the preference you have set. To avoid it, I guess some javascript would be required to detect the situation in the new tab or window or perhaps to prevent new tab or window being started? But maybe that's going too far? Geoff On 14/01/2009, at 10:45 PM, Ville Virtanen wrote: But still the wizard example requires session in some form and thus the same conversation in two tabs scenario is not possible? - Ville Geoff Callender-2 wrote: It would be great if Tapestry provided a really nice clear solution to conversation state (and continuations), but in the meantime the workarounds are actually not all that hard. Have you looked at the 3 Wizard examples and the Conversations List at http://jumpstart.doublenegative.com.au:8080/jumpstart/ ? One modification I'd like to make to the Wizards is to defer assigning a conversation id until you're on your way from the first page to the second page. Howard's talking about somehow making 5.1 work with Spring WebFlow. I'll follow that one with great interest, but I'll be wearing my sceptics hat as I fear that the SWF medicine might be worse than the problem it's trying to solve. Here are some good discussions of the problem: http://www.developertutorials.com/tutorials/java/develop-complex-web-applications-050422/page1.html http://rifers.org/blogs/gbevin/2005/4/11/continuations_continuations http://www.artima.com/forums/flat.jsp?forum=226&thread=197351 http://debasishg.blogspot.com/2006/07/spring-web-flow-declarative-web.html Geoff On 14/01/2009, at 5:25 PM, Kalle Korhonen wrote: I don't know if there's a better thread for discussing page scope and conversation (if you know other threads, please link them in) but I'm just doing research on this topic for supporting conversations in Trails. Shortly, I'm hoping that it'd be possible to have a generic implementation for conversations by dictating that a conversation should always happen on a single "page" or url with asynchronous calls. From my point of view, assuming that only the beginning of a conversation can be bookmarkable and that a conversation has one-to-one mapping with a url are reasonable conventions and will greatly simplify the required logic (compared to xml-based navigation flow configurations). These conversations could also be cleaned from session before the session expires and can have individual timeout values. Regarding the problem with multiple pages that others have already pointed out, with or without using cookies the urls need to be different (so the page contexts can be kept separate). Typically when editing a single object, you don't even want to allow multiple windows and this can be easily dealt with cookies transparently to the user. The only good example of where multi-window support is actually useful that I can come up with is search (say when you are trying to find the best flight to a destination). There, I wouldn't even like to necessary have a conversation identifier as part of the url, but as a parameter (e.g. /travelsearch?conversationId=123) since it's not meaningful to bookmark a url with a conversationId in it, but T5 doesn't allow one to easily manipulate urls and the page context is extremely handy way of making sure all subsequent action requests (from the same page) are participating in the same conversation. However, one of the issues with T5 I haven't been able to satisfactorily solve is forcing a page to use an additional context parameter. I've tried with returning the same page from onActivate then setting a conversation id in onPassivate, which works in principle but only if I persist the conversation id which kind of defies the point. Anybody happen to have a good, generic solution for automatically adding parameters to the activation context (so they are visible in the url)? I'd be also interested to know if anybody has thoughts on these ideas or is further along in providing a generic implementation for conversations in T5. Kalle On Fri, Dec 12, 2008 at 11:00 AM, Daniel Jue wrote: In the past I manually implemented this behavior by mixing server side and client side persistence. My code-fu was probably not very elegant. In my case, a user could open a report page after filling out a page of variables. These report pages would open in a new browser window/ tab. So instantly you have the situation where two reports can be open but use different data. I would store a client side string on each report page, and LRU hash map on the ASO
Re: Strange ClassNotFoundException: org.slf4j.Logger
I assume slf4j is on the classpath twice... Thiago HP wrote: Hi! I'm having a very strange exception when trying to run a T5 application (www.arsmachina.com.br/project/example): Error obtaining injected value for field org.apache.tapestry5.corelib.components.Form.logger: java.lang.ClassNotFoundException: org.slf4j.Logger It seems to be a Tapestry classloading issue, as slf4j-api *is* in the classpath. At my home, when running from JettyLauncher (modified to run under Java 6), runs OK. Under Run-Jetty-Run, the exception is thrown. Running an embedded Jetty at my home, ok, at my work, exception raised. Thanks in advance. Full stack trace: java.lang.RuntimeException: java.lang.ClassNotFoundException: caught an exception while obtaining a class file for org.apache.tapestry5.corelib.components.Form at org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl.findClass(ComponentInstantiatorSourceImpl.java:296) at org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl.findInstantiator(ComponentInstantiatorSourceImpl.java:272) at $ComponentInstantiatorSource_11ed4d10948.findInstantiator($ComponentInstantiatorSource_11ed4d10948.java) at org.apache.tapestry5.internal.services.PageElementFactoryImpl.newComponentElement(PageElementFactoryImpl.java:216) ... 144 more Caused by: java.lang.ClassNotFoundException: caught an exception while obtaining a class file for org.apache.tapestry5.corelib.components.Form at javassist.Loader.findClass(Loader.java:359) at org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl$PackageAwareLoader.findClass(ComponentInstantiatorSourceImpl.java:92) at javassist.Loader.loadClass(Loader.java:311) at java.lang.ClassLoader.loadClass(Unknown Source) at org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl.findClass(ComponentInstantiatorSourceImpl.java:292) ... 147 more Caused by: org.apache.tapestry5.internal.services.TransformationException: Error obtaining injected value for field org.apache.tapestry5.corelib.components.Form.logger: java.lang.ClassNotFoundException: org.slf4j.Logger at org.apache.tapestry5.internal.services.ComponentClassTransformerImpl.transformComponentClass(ComponentClassTransformerImpl.java:176) at $ComponentClassTransformer_11ed4d10954.transformComponentClass($ComponentClassTransformer_11ed4d10954.java) at org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl.onLoad(ComponentInstantiatorSourceImpl.java:201) at javassist.Loader.findClass(Loader.java:340) ... 151 more Caused by: java.lang.RuntimeException: Error obtaining injected value for field org.apache.tapestry5.corelib.components.Form.logger: java.lang.ClassNotFoundException: org.slf4j.Logger at org.apache.tapestry5.internal.transform.InjectWorker.transform(InjectWorker.java:68) at $ComponentClassTransformWorker_11ed4d109a4.transform($ComponentClassTransformWorker_11ed4d109a4.java) at $ComponentClassTransformWorker_11ed4d1099a.transform($ComponentClassTransformWorker_11ed4d1099a.java) at org.apache.tapestry5.internal.services.ComponentClassTransformerImpl.transformComponentClass(ComponentClassTransformerImpl.java:170) ... 154 more Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: org.slf4j.Logger at org.apache.tapestry5.internal.services.InternalClassTransformationImpl.toClass(InternalClassTransformationImpl.java:1765) at org.apache.tapestry5.internal.transform.InjectWorker.transform(InjectWorker.java:55) ... 157 more Caused by: java.lang.ClassNotFoundException: org.slf4j.Logger at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at javassist.Loader.delegateToParent(Loader.java:428) at javassist.Loader.loadClass(Loader.java:314) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at org.apache.tapestry5.internal.services.InternalClassTransformationImpl.toClass(InternalClassTransformationImpl.java:1761) -- Joachim Van der Auwera PROGS bvba, progs.be - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: example BaseURLSource: T5
This version prepends http or https before the url. In production mode it builds on a fixed url and in development mode it returns whatever you used to get to the page (localhost? IP?) and adds the right port-number to it. It is a stripped down version of my actual implementation, since that application can be accessed in different modes from different urls so I hope I didn't strip out to much :o) public class SSLBaseURLSource implements BaseURLSource { private boolean production; private RequestGlobals requestGlobals; public SSLBaseURLSource( final boolean production, final RequestGlobals requestGlobals) { this.production = production; this.requestGlobals = requestGlobals; } public String getBaseURL(final boolean secure) { StringBuilder result = new StringBuilder(secure ? "https://"; : "http://";); if(production) { result.append("www.myurl.com"); } else { String requestURL = requestGlobals.getHTTPServletRequest().getRequestURL().toString(); int index = requestURL.indexOf("://"); if(index > 0) { requestURL = requestURL.substring(index + 3); } index = requestURL.indexOf(":"); if(index > 0) { requestURL = requestURL.substring(0, index + 1); } result.append(requestURL).append(secure ? "8443" : "8080"); } return result.toString(); } } And then from the AppModule: public static void contributeAlias( @Symbol(SymbolConstants.PRODUCTION_MODE) final boolean productionMode, @InjectService("ApplicationStateManager") final ApplicationStateManager applicationStateManager, @InjectService("RequestGlobals") final RequestGlobals requestGlobals, final Configuration configuration) { AliasContribution aliasContribution = new AliasContribution( BaseURLSource.class, new SSLBaseURLSource(productionMode, requestGlobals) ); configuration.add(aliasContribution); } Hope this helps. regards, Onno Scheffers On Wed, Jan 14, 2009 at 12:01 PM, peibel wrote: > > > Hi, > > Someone has an example using BaseURLSource, is very important, I'm tired > and > I don´t get going from http to https from an http link to the page. > > thanks for your help > -- > View this message in context: > http://www.nabble.com/example-BaseURLSource%3A-T5-tp21453809p21453809.html > Sent from the Tapestry - User mailing list archive at Nabble.com. > > > - > To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org > For additional commands, e-mail: users-h...@tapestry.apache.org > >
Re: Persistance
But still the wizard example requires session in some form and thus the same conversation in two tabs scenario is not possible? - Ville Geoff Callender-2 wrote: > > It would be great if Tapestry provided a really nice clear solution to > conversation state (and continuations), but in the meantime the > workarounds are actually not all that hard. Have you looked at the 3 > Wizard examples and the Conversations List at > http://jumpstart.doublenegative.com.au:8080/jumpstart/ > ? > > One modification I'd like to make to the Wizards is to defer assigning > a conversation id until you're on your way from the first page to the > second page. > > Howard's talking about somehow making 5.1 work with Spring WebFlow. > I'll follow that one with great interest, but I'll be wearing my > sceptics hat as I fear that the SWF medicine might be worse than the > problem it's trying to solve. > > Here are some good discussions of the problem: > > > http://www.developertutorials.com/tutorials/java/develop-complex-web-applications-050422/page1.html > http://rifers.org/blogs/gbevin/2005/4/11/continuations_continuations > http://www.artima.com/forums/flat.jsp?forum=226&thread=197351 > > http://debasishg.blogspot.com/2006/07/spring-web-flow-declarative-web.html > > Geoff > > On 14/01/2009, at 5:25 PM, Kalle Korhonen wrote: > >> I don't know if there's a better thread for discussing page scope and >> conversation (if you know other threads, please link them in) but >> I'm just >> doing research on this topic for supporting conversations in Trails. >> Shortly, I'm hoping that it'd be possible to have a generic >> implementation >> for conversations by dictating that a conversation should always >> happen on a >> single "page" or url with asynchronous calls. From my point of view, >> assuming that only the beginning of a conversation can be >> bookmarkable and >> that a conversation has one-to-one mapping with a url are reasonable >> conventions and will greatly simplify the required logic (compared to >> xml-based navigation flow configurations). These conversations could >> also be >> cleaned from session before the session expires and can have >> individual >> timeout values. >> >> Regarding the problem with multiple pages that others have already >> pointed >> out, with or without using cookies the urls need to be different (so >> the >> page contexts can be kept separate). Typically when editing a single >> object, >> you don't even want to allow multiple windows and this can be easily >> dealt >> with cookies transparently to the user. The only good example of where >> multi-window support is actually useful that I can come up with is >> search >> (say when you are trying to find the best flight to a destination). >> There, I >> wouldn't even like to necessary have a conversation identifier as >> part of >> the url, but as a parameter (e.g. /travelsearch?conversationId=123) >> since >> it's not meaningful to bookmark a url with a conversationId in it, >> but T5 >> doesn't allow one to easily manipulate urls and the page context is >> extremely handy way of making sure all subsequent action requests >> (from the >> same page) are participating in the same conversation. However, one >> of the >> issues with T5 I haven't been able to satisfactorily solve is >> forcing a page >> to use an additional context parameter. I've tried with returning >> the same >> page from onActivate then setting a conversation id in onPassivate, >> which >> works in principle but only if I persist the conversation id which >> kind of >> defies the point. Anybody happen to have a good, generic solution for >> automatically adding parameters to the activation context (so they are >> visible in the url)? I'd be also interested to know if anybody has >> thoughts >> on these ideas or is further along in providing a generic >> implementation for >> conversations in T5. >> >> Kalle >> >> >> On Fri, Dec 12, 2008 at 11:00 AM, Daniel Jue >> wrote: >> >>> In the past I manually implemented this behavior by mixing server >>> side and >>> client side persistence. My code-fu was probably not very elegant. >>> >>> In my case, a user could open a report page after filling out a >>> page of >>> variables. These report pages would open in a new browser window/ >>> tab. So >>> instantly you have the situation where two reports can be open but >>> use >>> different data. I would store a client side string on each report >>> page, >>> and >>> LRU hash map on the ASO side would match it to the relative data, >>> just >>> before the report was run and a new page opened. If it was in the >>> LRU, I >>> could grab the cached report. If not, I still had enough >>> information to >>> run >>> the report again. If the report page needed to be refreshed (such as >>> sorting something on the page, non-async), the client side key >>> would look >>> up >>> the data. >
Re: [T5] improve documentation
A search on the Tapestry site! I have always wandered why there isn't one? these days its a given. Peter - Original Message - From: superoverdr...@gmx.de To: users@tapestry.apache.org Sent: Wednesday, 14 January, 2009 1:05:50 PM GMT +02:00 Athens, Beirut, Bucharest, Istanbul Subject: Re: RE: [T5] improve documentation Jumpstart would also be a good idea Original-Nachricht > Datum: Wed, 14 Jan 2009 10:22:13 - > Von: "Newham, Cameron" > An: "Tapestry users" > Betreff: RE: [T5] improve documentation > I second this. > > I much prefer the "cookbook" approach as opposed to having to wade through > a complete application to find how to do something. > > Jumpstart is excellent and has helped me many times. All it needs is > perhaps a bit more explanation of what's going on, more cases covering > solutions > to common problems, and a bit more filling out. > > > > -Original Message- > From: Andy Pahne [mailto:andy.pa...@googlemail.com] > Sent: 13 January 2009 21:15 > To: Tapestry users > Subject: Re: [T5] improve documentation > > > I'd prefer if it were more like jumpstart than petstore. > > Any chance jumpstart becoming part of the framework? > > Andy > > > > superoverdr...@gmx.de schrieb: > > An good old pet-shop application...with lots of Ajax would be nice...or > something similiar. > > > > It could coves common questions on the Tapestry mailing list from the > past > > by providing an example implementation. > > > > Would be good if it also contained one or the other things of the > following list: > > > > - Caching HTML fragments (e.g. expensive database queries) that only > need to be generated > > every 5 minutes or 5 hours. > > > > - Dynamic rendering of form elements (when the configuration is read > from a database, for dynamic > > form field definitions, e.g. in the backend "3 textfields with 50 chars > max, 10 checkboxes with 3 minimum selections.) > > > > - some "common" Ajax/DHTML stuff you see nowadays on most websites..e.g. > > "animations", e.g. imagine you delete a row from a table that dissolves > with a small animation, or combining an Ajax List with autocomplete or > something like this here: > > > > > http://www.interiders.com/2008/02/11/prototextboxlist-meets-autocompletion/ > > > > and stuff like progress bars (e.g. during a search) > > > > Just a few suggestions! > > > > Toby > > > > Original-Nachricht > > > >> Datum: Tue, 13 Jan 2009 10:15:44 -0800 > >> Von: Howard Lewis Ship > >> An: Tapestry users > >> Betreff: Re: [T5] improve documentation > >> > > > > > >> I've been coming to the same conclusion. > >> > >> I'm clearing time with my boss to pursue this, along with several > >> online articles. > >> > >> I have an idea for an application that can demonstrate every bit of > >> Tapestry and be useful to boot. > >> > >> So the "guide" is the reference, what I have planned is the "tour". > >> It would replace the tutorial. > >> > >> On Tue, Jan 13, 2009 at 6:28 AM, Ulrich Stärk > wrote: > >> > >>> Hi all, > >>> > >>> Tapestry's current documentation is very complete, covering almost > >>> everything a developer needs to know to be productive with Tapestry. > >>> Unfortunately this documentation is clustered across several locations > >>> > >> thus > >> > >>> making it hard to find information and very hard for beginners to get > >>> > >> going. > >> > >>> Sometimes even I am annoyed because I don't find the information I'm > >>> > >> looking > >> > >>> for at the expected place. There is the official user guide, which is > no > >>> guide in the actual sense of the word but merely a collection of > topics > >>> using Tapestry-specific vocabulary as the topics, making it hard for a > >>> beginner to get started. Then there is the tutorial that gets you > >>> > >> started > >> > >>> with Tapestry but doesn't go deep enough to know the name of the topic > >>> > >> to > >> > >>> look for in the user guide when a problem arises or more information > on > >>> > >> a > >> > >>> subject is needed. Thirdly, there is the wiki that contains numerous > >>> examples on how to solve common use cases with Tapestry. And lastly > >>> > >> there is > >> > >>> the component reference that not only contains documentation for a > >>> > >> specific > >> > >>> component but also contains examples on how to use them to solve > common > >>> > >> use > >> > >>> cases. Today for example, someone on the users mailing list asked for > >>> > >> how to > >> > >>> have some kind of a "dynamic component". He wanted to display a > certain > >>> component based on the outcome of a function he wrote in his page > class. > >>> This question has come up before on the list and because of the > "Static > >>> Structure, Dynamic Behavior" paradigm - which is a key principle and > is > >>> > >> not > >
Re: Strange ClassNotFoundException: org.slf4j.Logger
On Wed, Jan 14, 2009 at 9:19 AM, Martijn Brinkers wrote: > Have you tried setting parentLoaderPriority? Hi! Thanks for your answer, but it didn't work. That wiki page talks about @Inject'ng a Logger, but in my case the problem happens when instantiating (or getting) a Logger for a Form component. All other pages work. -- Thiago - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: Strange ClassNotFoundException: org.slf4j.Logger
Have you tried setting parentLoaderPriority? See: http://wiki.apache.org/tapestry/Tapestry5HowToSetupEclipseRunJettyRun Martijn On Wed, 2009-01-14 at 09:11 -0200, Thiago HP wrote: > Hi! > > I'm having a very strange exception when trying to run a T5 > application (www.arsmachina.com.br/project/example): > Error obtaining injected value for field > org.apache.tapestry5.corelib.components.Form.logger: > java.lang.ClassNotFoundException: org.slf4j.Logger > It seems to be a Tapestry classloading issue, as slf4j-api *is* in the > classpath. > > At my home, when running from JettyLauncher (modified to run under > Java 6), runs OK. Under Run-Jetty-Run, the exception is thrown. > Running an embedded Jetty at my home, ok, at my work, exception > raised. > > Thanks in advance. > > Full stack trace: > java.lang.RuntimeException: java.lang.ClassNotFoundException: caught > an exception while obtaining a class file for > org.apache.tapestry5.corelib.components.Form > at > org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl.findClass(ComponentInstantiatorSourceImpl.java:296) > at > org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl.findInstantiator(ComponentInstantiatorSourceImpl.java:272) > at > $ComponentInstantiatorSource_11ed4d10948.findInstantiator($ComponentInstantiatorSource_11ed4d10948.java) > at > org.apache.tapestry5.internal.services.PageElementFactoryImpl.newComponentElement(PageElementFactoryImpl.java:216) > ... 144 more > Caused by: java.lang.ClassNotFoundException: caught an exception while > obtaining a class file for > org.apache.tapestry5.corelib.components.Form > at javassist.Loader.findClass(Loader.java:359) > at > org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl$PackageAwareLoader.findClass(ComponentInstantiatorSourceImpl.java:92) > at javassist.Loader.loadClass(Loader.java:311) > at java.lang.ClassLoader.loadClass(Unknown Source) > at > org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl.findClass(ComponentInstantiatorSourceImpl.java:292) > ... 147 more > Caused by: org.apache.tapestry5.internal.services.TransformationException: > Error obtaining injected value for field > org.apache.tapestry5.corelib.components.Form.logger: > java.lang.ClassNotFoundException: org.slf4j.Logger > at > org.apache.tapestry5.internal.services.ComponentClassTransformerImpl.transformComponentClass(ComponentClassTransformerImpl.java:176) > at > $ComponentClassTransformer_11ed4d10954.transformComponentClass($ComponentClassTransformer_11ed4d10954.java) > at > org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl.onLoad(ComponentInstantiatorSourceImpl.java:201) > at javassist.Loader.findClass(Loader.java:340) > ... 151 more > Caused by: java.lang.RuntimeException: Error obtaining injected value > for field org.apache.tapestry5.corelib.components.Form.logger: > java.lang.ClassNotFoundException: org.slf4j.Logger > at > org.apache.tapestry5.internal.transform.InjectWorker.transform(InjectWorker.java:68) > at > $ComponentClassTransformWorker_11ed4d109a4.transform($ComponentClassTransformWorker_11ed4d109a4.java) > at > $ComponentClassTransformWorker_11ed4d1099a.transform($ComponentClassTransformWorker_11ed4d1099a.java) > at > org.apache.tapestry5.internal.services.ComponentClassTransformerImpl.transformComponentClass(ComponentClassTransformerImpl.java:170) > ... 154 more > Caused by: java.lang.RuntimeException: > java.lang.ClassNotFoundException: org.slf4j.Logger > at > org.apache.tapestry5.internal.services.InternalClassTransformationImpl.toClass(InternalClassTransformationImpl.java:1765) > at > org.apache.tapestry5.internal.transform.InjectWorker.transform(InjectWorker.java:55) > ... 157 more > Caused by: java.lang.ClassNotFoundException: org.slf4j.Logger > at java.net.URLClassLoader$1.run(Unknown Source) > at java.security.AccessController.doPrivileged(Native Method) > at java.net.URLClassLoader.findClass(Unknown Source) > at java.lang.ClassLoader.loadClass(Unknown Source) > at java.lang.ClassLoader.loadClass(Unknown Source) > at javassist.Loader.delegateToParent(Loader.java:428) > at javassist.Loader.loadClass(Loader.java:314) > at java.lang.ClassLoader.loadClass(Unknown Source) > at java.lang.ClassLoader.loadClassInternal(Unknown Source) > at java.lang.Class.forName0(Native Method) > at java.lang.Class.forName(Unknown Source) > at > org.apache.tapestry5.internal.services.InternalClassTransformationImpl.toClass(InternalClassTransformationImpl.java:1761) > - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Strange ClassNotFoundException: org.slf4j.Logger
Hi! I'm having a very strange exception when trying to run a T5 application (www.arsmachina.com.br/project/example): Error obtaining injected value for field org.apache.tapestry5.corelib.components.Form.logger: java.lang.ClassNotFoundException: org.slf4j.Logger It seems to be a Tapestry classloading issue, as slf4j-api *is* in the classpath. At my home, when running from JettyLauncher (modified to run under Java 6), runs OK. Under Run-Jetty-Run, the exception is thrown. Running an embedded Jetty at my home, ok, at my work, exception raised. Thanks in advance. Full stack trace: java.lang.RuntimeException: java.lang.ClassNotFoundException: caught an exception while obtaining a class file for org.apache.tapestry5.corelib.components.Form at org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl.findClass(ComponentInstantiatorSourceImpl.java:296) at org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl.findInstantiator(ComponentInstantiatorSourceImpl.java:272) at $ComponentInstantiatorSource_11ed4d10948.findInstantiator($ComponentInstantiatorSource_11ed4d10948.java) at org.apache.tapestry5.internal.services.PageElementFactoryImpl.newComponentElement(PageElementFactoryImpl.java:216) ... 144 more Caused by: java.lang.ClassNotFoundException: caught an exception while obtaining a class file for org.apache.tapestry5.corelib.components.Form at javassist.Loader.findClass(Loader.java:359) at org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl$PackageAwareLoader.findClass(ComponentInstantiatorSourceImpl.java:92) at javassist.Loader.loadClass(Loader.java:311) at java.lang.ClassLoader.loadClass(Unknown Source) at org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl.findClass(ComponentInstantiatorSourceImpl.java:292) ... 147 more Caused by: org.apache.tapestry5.internal.services.TransformationException: Error obtaining injected value for field org.apache.tapestry5.corelib.components.Form.logger: java.lang.ClassNotFoundException: org.slf4j.Logger at org.apache.tapestry5.internal.services.ComponentClassTransformerImpl.transformComponentClass(ComponentClassTransformerImpl.java:176) at $ComponentClassTransformer_11ed4d10954.transformComponentClass($ComponentClassTransformer_11ed4d10954.java) at org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl.onLoad(ComponentInstantiatorSourceImpl.java:201) at javassist.Loader.findClass(Loader.java:340) ... 151 more Caused by: java.lang.RuntimeException: Error obtaining injected value for field org.apache.tapestry5.corelib.components.Form.logger: java.lang.ClassNotFoundException: org.slf4j.Logger at org.apache.tapestry5.internal.transform.InjectWorker.transform(InjectWorker.java:68) at $ComponentClassTransformWorker_11ed4d109a4.transform($ComponentClassTransformWorker_11ed4d109a4.java) at $ComponentClassTransformWorker_11ed4d1099a.transform($ComponentClassTransformWorker_11ed4d1099a.java) at org.apache.tapestry5.internal.services.ComponentClassTransformerImpl.transformComponentClass(ComponentClassTransformerImpl.java:170) ... 154 more Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: org.slf4j.Logger at org.apache.tapestry5.internal.services.InternalClassTransformationImpl.toClass(InternalClassTransformationImpl.java:1765) at org.apache.tapestry5.internal.transform.InjectWorker.transform(InjectWorker.java:55) ... 157 more Caused by: java.lang.ClassNotFoundException: org.slf4j.Logger at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at javassist.Loader.delegateToParent(Loader.java:428) at javassist.Loader.loadClass(Loader.java:314) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at org.apache.tapestry5.internal.services.InternalClassTransformationImpl.toClass(InternalClassTransformationImpl.java:1761) -- Thiago - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: RE: [T5] improve documentation
Jumpstart would also be a good idea Original-Nachricht > Datum: Wed, 14 Jan 2009 10:22:13 - > Von: "Newham, Cameron" > An: "Tapestry users" > Betreff: RE: [T5] improve documentation > I second this. > > I much prefer the "cookbook" approach as opposed to having to wade through > a complete application to find how to do something. > > Jumpstart is excellent and has helped me many times. All it needs is > perhaps a bit more explanation of what's going on, more cases covering > solutions > to common problems, and a bit more filling out. > > > > -Original Message- > From: Andy Pahne [mailto:andy.pa...@googlemail.com] > Sent: 13 January 2009 21:15 > To: Tapestry users > Subject: Re: [T5] improve documentation > > > I'd prefer if it were more like jumpstart than petstore. > > Any chance jumpstart becoming part of the framework? > > Andy > > > > superoverdr...@gmx.de schrieb: > > An good old pet-shop application...with lots of Ajax would be nice...or > something similiar. > > > > It could coves common questions on the Tapestry mailing list from the > past > > by providing an example implementation. > > > > Would be good if it also contained one or the other things of the > following list: > > > > - Caching HTML fragments (e.g. expensive database queries) that only > need to be generated > > every 5 minutes or 5 hours. > > > > - Dynamic rendering of form elements (when the configuration is read > from a database, for dynamic > > form field definitions, e.g. in the backend "3 textfields with 50 chars > max, 10 checkboxes with 3 minimum selections.) > > > > - some "common" Ajax/DHTML stuff you see nowadays on most websites..e.g. > > "animations", e.g. imagine you delete a row from a table that dissolves > with a small animation, or combining an Ajax List with autocomplete or > something like this here: > > > > > http://www.interiders.com/2008/02/11/prototextboxlist-meets-autocompletion/ > > > > and stuff like progress bars (e.g. during a search) > > > > Just a few suggestions! > > > > Toby > > > > Original-Nachricht > > > >> Datum: Tue, 13 Jan 2009 10:15:44 -0800 > >> Von: Howard Lewis Ship > >> An: Tapestry users > >> Betreff: Re: [T5] improve documentation > >> > > > > > >> I've been coming to the same conclusion. > >> > >> I'm clearing time with my boss to pursue this, along with several > >> online articles. > >> > >> I have an idea for an application that can demonstrate every bit of > >> Tapestry and be useful to boot. > >> > >> So the "guide" is the reference, what I have planned is the "tour". > >> It would replace the tutorial. > >> > >> On Tue, Jan 13, 2009 at 6:28 AM, Ulrich Stärk > wrote: > >> > >>> Hi all, > >>> > >>> Tapestry's current documentation is very complete, covering almost > >>> everything a developer needs to know to be productive with Tapestry. > >>> Unfortunately this documentation is clustered across several locations > >>> > >> thus > >> > >>> making it hard to find information and very hard for beginners to get > >>> > >> going. > >> > >>> Sometimes even I am annoyed because I don't find the information I'm > >>> > >> looking > >> > >>> for at the expected place. There is the official user guide, which is > no > >>> guide in the actual sense of the word but merely a collection of > topics > >>> using Tapestry-specific vocabulary as the topics, making it hard for a > >>> beginner to get started. Then there is the tutorial that gets you > >>> > >> started > >> > >>> with Tapestry but doesn't go deep enough to know the name of the topic > >>> > >> to > >> > >>> look for in the user guide when a problem arises or more information > on > >>> > >> a > >> > >>> subject is needed. Thirdly, there is the wiki that contains numerous > >>> examples on how to solve common use cases with Tapestry. And lastly > >>> > >> there is > >> > >>> the component reference that not only contains documentation for a > >>> > >> specific > >> > >>> component but also contains examples on how to use them to solve > common > >>> > >> use > >> > >>> cases. Today for example, someone on the users mailing list asked for > >>> > >> how to > >> > >>> have some kind of a "dynamic component". He wanted to display a > certain > >>> component based on the outcome of a function he wrote in his page > class. > >>> This question has come up before on the list and because of the > "Static > >>> Structure, Dynamic Behavior" paradigm - which is a key principle and > is > >>> > >> not > >> > >>> mentioned in the documentation but at the bottom of the start page - > the > >>> solution is to use the Delegate component with blocks. In the Delegate > >>> component reference documentation there is an example covering exactly > >>> > >> that > >> > >>> use case. But it seems that the user wasn't able to
example BaseURLSource: T5
Hi, Someone has an example using BaseURLSource, is very important, I'm tired and I don´t get going from http to https from an http link to the page. thanks for your help -- View this message in context: http://www.nabble.com/example-BaseURLSource%3A-T5-tp21453809p21453809.html Sent from the Tapestry - User mailing list archive at Nabble.com. - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Tapestry Nightly
Hi, It seem's that the Nightly site / builds / maven etc are down for some days now... Is there any previewed date for their come back ? Regards, Martin -- View this message in context: http://www.nabble.com/Tapestry-Nightly-tp21453644p21453644.html Sent from the Tapestry - User mailing list archive at Nabble.com. - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
RE: [T5] improve documentation
I second this. I much prefer the "cookbook" approach as opposed to having to wade through a complete application to find how to do something. Jumpstart is excellent and has helped me many times. All it needs is perhaps a bit more explanation of what's going on, more cases covering solutions to common problems, and a bit more filling out. -Original Message- From: Andy Pahne [mailto:andy.pa...@googlemail.com] Sent: 13 January 2009 21:15 To: Tapestry users Subject: Re: [T5] improve documentation I'd prefer if it were more like jumpstart than petstore. Any chance jumpstart becoming part of the framework? Andy superoverdr...@gmx.de schrieb: > An good old pet-shop application...with lots of Ajax would be nice...or > something similiar. > > It could coves common questions on the Tapestry mailing list from the past > by providing an example implementation. > > Would be good if it also contained one or the other things of the following > list: > > - Caching HTML fragments (e.g. expensive database queries) that only need to > be generated > every 5 minutes or 5 hours. > > - Dynamic rendering of form elements (when the configuration is read from a > database, for dynamic > form field definitions, e.g. in the backend "3 textfields with 50 chars max, > 10 checkboxes with 3 minimum selections.) > > - some "common" Ajax/DHTML stuff you see nowadays on most websites..e.g. > "animations", e.g. imagine you delete a row from a table that dissolves with > a small animation, or combining an Ajax List with autocomplete or something > like this here: > > http://www.interiders.com/2008/02/11/prototextboxlist-meets-autocompletion/ > > and stuff like progress bars (e.g. during a search) > > Just a few suggestions! > > Toby > > Original-Nachricht > >> Datum: Tue, 13 Jan 2009 10:15:44 -0800 >> Von: Howard Lewis Ship >> An: Tapestry users >> Betreff: Re: [T5] improve documentation >> > > >> I've been coming to the same conclusion. >> >> I'm clearing time with my boss to pursue this, along with several >> online articles. >> >> I have an idea for an application that can demonstrate every bit of >> Tapestry and be useful to boot. >> >> So the "guide" is the reference, what I have planned is the "tour". >> It would replace the tutorial. >> >> On Tue, Jan 13, 2009 at 6:28 AM, Ulrich Stärk wrote: >> >>> Hi all, >>> >>> Tapestry's current documentation is very complete, covering almost >>> everything a developer needs to know to be productive with Tapestry. >>> Unfortunately this documentation is clustered across several locations >>> >> thus >> >>> making it hard to find information and very hard for beginners to get >>> >> going. >> >>> Sometimes even I am annoyed because I don't find the information I'm >>> >> looking >> >>> for at the expected place. There is the official user guide, which is no >>> guide in the actual sense of the word but merely a collection of topics >>> using Tapestry-specific vocabulary as the topics, making it hard for a >>> beginner to get started. Then there is the tutorial that gets you >>> >> started >> >>> with Tapestry but doesn't go deep enough to know the name of the topic >>> >> to >> >>> look for in the user guide when a problem arises or more information on >>> >> a >> >>> subject is needed. Thirdly, there is the wiki that contains numerous >>> examples on how to solve common use cases with Tapestry. And lastly >>> >> there is >> >>> the component reference that not only contains documentation for a >>> >> specific >> >>> component but also contains examples on how to use them to solve common >>> >> use >> >>> cases. Today for example, someone on the users mailing list asked for >>> >> how to >> >>> have some kind of a "dynamic component". He wanted to display a certain >>> component based on the outcome of a function he wrote in his page class. >>> This question has come up before on the list and because of the "Static >>> Structure, Dynamic Behavior" paradigm - which is a key principle and is >>> >> not >> >>> mentioned in the documentation but at the bottom of the start page - the >>> solution is to use the Delegate component with blocks. In the Delegate >>> component reference documentation there is an example covering exactly >>> >> that >> >>> use case. But it seems that the user wasn't able to find it - either he >>> didn't look at all or more probably, he looked in the wrong place. How >>> >> could >> >>> he possibly know, that the solution to his use case is documented in a >>> component named Delegate? >>> Because I think that the current arrangement of the documentation makes >>> >> it >> >>> hard to grasp the concepts of Tapestry, especially for beginners, and to >>> quickly find the information one seeks, I propose the following steps to >>> >> be
Re: Persistance
It would be great if Tapestry provided a really nice clear solution to conversation state (and continuations), but in the meantime the workarounds are actually not all that hard. Have you looked at the 3 Wizard examples and the Conversations List at http://jumpstart.doublenegative.com.au:8080/jumpstart/ ? One modification I'd like to make to the Wizards is to defer assigning a conversation id until you're on your way from the first page to the second page. Howard's talking about somehow making 5.1 work with Spring WebFlow. I'll follow that one with great interest, but I'll be wearing my sceptics hat as I fear that the SWF medicine might be worse than the problem it's trying to solve. Here are some good discussions of the problem: http://www.developertutorials.com/tutorials/java/develop-complex-web-applications-050422/page1.html http://rifers.org/blogs/gbevin/2005/4/11/continuations_continuations http://www.artima.com/forums/flat.jsp?forum=226&thread=197351 http://debasishg.blogspot.com/2006/07/spring-web-flow-declarative-web.html Geoff On 14/01/2009, at 5:25 PM, Kalle Korhonen wrote: I don't know if there's a better thread for discussing page scope and conversation (if you know other threads, please link them in) but I'm just doing research on this topic for supporting conversations in Trails. Shortly, I'm hoping that it'd be possible to have a generic implementation for conversations by dictating that a conversation should always happen on a single "page" or url with asynchronous calls. From my point of view, assuming that only the beginning of a conversation can be bookmarkable and that a conversation has one-to-one mapping with a url are reasonable conventions and will greatly simplify the required logic (compared to xml-based navigation flow configurations). These conversations could also be cleaned from session before the session expires and can have individual timeout values. Regarding the problem with multiple pages that others have already pointed out, with or without using cookies the urls need to be different (so the page contexts can be kept separate). Typically when editing a single object, you don't even want to allow multiple windows and this can be easily dealt with cookies transparently to the user. The only good example of where multi-window support is actually useful that I can come up with is search (say when you are trying to find the best flight to a destination). There, I wouldn't even like to necessary have a conversation identifier as part of the url, but as a parameter (e.g. /travelsearch?conversationId=123) since it's not meaningful to bookmark a url with a conversationId in it, but T5 doesn't allow one to easily manipulate urls and the page context is extremely handy way of making sure all subsequent action requests (from the same page) are participating in the same conversation. However, one of the issues with T5 I haven't been able to satisfactorily solve is forcing a page to use an additional context parameter. I've tried with returning the same page from onActivate then setting a conversation id in onPassivate, which works in principle but only if I persist the conversation id which kind of defies the point. Anybody happen to have a good, generic solution for automatically adding parameters to the activation context (so they are visible in the url)? I'd be also interested to know if anybody has thoughts on these ideas or is further along in providing a generic implementation for conversations in T5. Kalle On Fri, Dec 12, 2008 at 11:00 AM, Daniel Jue wrote: In the past I manually implemented this behavior by mixing server side and client side persistence. My code-fu was probably not very elegant. In my case, a user could open a report page after filling out a page of variables. These report pages would open in a new browser window/ tab. So instantly you have the situation where two reports can be open but use different data. I would store a client side string on each report page, and LRU hash map on the ASO side would match it to the relative data, just before the report was run and a new page opened. If it was in the LRU, I could grab the cached report. If not, I still had enough information to run the report again. If the report page needed to be refreshed (such as sorting something on the page, non-async), the client side key would look up the data. I used a small LRU limit (like 5) to keep the size down. Daniel On Fri, Nov 28, 2008 at 10:18 PM, thermus wrote: I'm interested in this as well. Specifically if a user has two page instances open, how can T5 persistence be used reliably? I found on Safari and Firefox (not sure about IE, but likely a problem there as well) that the persisted session properties are shared between page instances and each page can overwrite the another. My searches didn't come up
Re: Persistance
Moi Kalle, I would try to achieve something like that using: Custom PersistentFieldStrategy (http://tapestry.apache.org/tapestry5/apidocs/org/apache/tapestry5/services/PersistentFieldStrategy.html) Custom LinkFactoryListener (http://tapestry.apache.org/tapestry5/apidocs/org/apache/tapestry5/internal/services/LinkFactoryListener.html) Custom ComponentEventRequestFilter + PageRenderRequestFilter (http://tapestry.apache.org/tapestry5/apidocs/org/apache/tapestry5/services/ComponentEventRequestFilter.html) Then in theory you can code the conversation id to all links and forms, use the filters to intercept the request and get the id back and finally use the id to retrieve the value from ConversationManager via the CustomPersistence strategy. The persistence strategy may use ehcache or something like that to actually persist the objects. The request object can be used to transmit the conversation id from the filter to the persistence strategy? This implementation could also be per client tab and not at all dependent of the session etc. Just some quick thoughts.. - Ville Kalle Korhonen-2 wrote: > > I don't know if there's a better thread for discussing page scope and > conversation (if you know other threads, please link them in) but I'm just > doing research on this topic for supporting conversations in Trails. > Shortly, I'm hoping that it'd be possible to have a generic implementation > for conversations by dictating that a conversation should always happen on > a > single "page" or url with asynchronous calls. From my point of view, > assuming that only the beginning of a conversation can be bookmarkable and > that a conversation has one-to-one mapping with a url are reasonable > conventions and will greatly simplify the required logic (compared to > xml-based navigation flow configurations). These conversations could also > be > cleaned from session before the session expires and can have individual > timeout values. > > Regarding the problem with multiple pages that others have already pointed > out, with or without using cookies the urls need to be different (so the > page contexts can be kept separate). Typically when editing a single > object, > you don't even want to allow multiple windows and this can be easily dealt > with cookies transparently to the user. The only good example of where > multi-window support is actually useful that I can come up with is search > (say when you are trying to find the best flight to a destination). There, > I > wouldn't even like to necessary have a conversation identifier as part of > the url, but as a parameter (e.g. /travelsearch?conversationId=123) since > it's not meaningful to bookmark a url with a conversationId in it, but T5 > doesn't allow one to easily manipulate urls and the page context is > extremely handy way of making sure all subsequent action requests (from > the > same page) are participating in the same conversation. However, one of the > issues with T5 I haven't been able to satisfactorily solve is forcing a > page > to use an additional context parameter. I've tried with returning the same > page from onActivate then setting a conversation id in onPassivate, which > works in principle but only if I persist the conversation id which kind of > defies the point. Anybody happen to have a good, generic solution for > automatically adding parameters to the activation context (so they are > visible in the url)? I'd be also interested to know if anybody has > thoughts > on these ideas or is further along in providing a generic implementation > for > conversations in T5. > > Kalle > > > On Fri, Dec 12, 2008 at 11:00 AM, Daniel Jue wrote: > >> In the past I manually implemented this behavior by mixing server side >> and >> client side persistence. My code-fu was probably not very elegant. >> >> In my case, a user could open a report page after filling out a page of >> variables. These report pages would open in a new browser window/tab. So >> instantly you have the situation where two reports can be open but use >> different data. I would store a client side string on each report page, >> and >> LRU hash map on the ASO side would match it to the relative data, just >> before the report was run and a new page opened. If it was in the LRU, I >> could grab the cached report. If not, I still had enough information to >> run >> the report again. If the report page needed to be refreshed (such as >> sorting something on the page, non-async), the client side key would look >> up >> the data. >> >> I used a small LRU limit (like 5) to keep the size down. >> >> Daniel >> >> On Fri, Nov 28, 2008 at 10:18 PM, thermus wrote: >> >> > >> > I'm interested in this as well. Specifically if a user has two page >> > instances open, how can T5 persistence be used reliably? >> > >> > I found on Safari and Firefox (not sure about IE, but likely a problem >> > there >> > as well) that the persisted session properties are shared between page >> > instance
Re: NoSuchElementException in volatile loop
Problem solved. It seems that for some reason not entirely clear to me, there was a difference in server side and client side state. The end result is the exception below. I believe that either there is a mistake in the comments in the code (about everything being driven by the stored actions, in which case a NoSuchElementException should not occur) or that a better exception message could be produced indicating that the number of items in the loop does not match the count expected by the stored actions. Kind regards, Joachim Joachim Van der Auwera wrote: Sorry, this time with stacktrace... I have a form which causes the following exception on submit. This seems to be a problem with the advance_volatile commands in the form. I am using tapestry 5.0.18. Any ideas how to fix this? Stack trace below, Thanks for the help. Joachim 2009-01-13 18:31:00,770 ERROR [org.apache.tapestry5.services.TapestryModule.RequestExceptionHandler] Processing of request failed with uncaught exception: org.apache.tapestry5.runtime.ComponentEventException org.apache.tapestry5.runtime.ComponentEventException [at classpath:my/app/gui/components/Layout.tml, line 198, column 60] at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.triggerContextEvent(ComponentPageElementImpl.java:1076) at org.apache.tapestry5.internal.services.ComponentEventRequestHandlerImpl.handle(ComponentEventRequestHandlerImpl.java:68) at org.apache.tapestry5.internal.services.ImmediateActionRenderResponseFilter.handle(ImmediateActionRenderResponseFilter.java:42) at $ComponentEventRequestHandler_11ed1054ff6.handle($ComponentEventRequestHandler_11ed1054ff6.java) at org.apache.tapestry5.internal.services.AjaxFilter.handle(AjaxFilter.java:42) at $ComponentEventRequestHandler_11ed1054ff6.handle($ComponentEventRequestHandler_11ed1054ff6.java) at org.apache.tapestry5.services.TapestryModule$44.handle(TapestryModule.java:2105) at $ComponentEventRequestHandler_11ed1054ff6.handle($ComponentEventRequestHandler_11ed1054ff6.java) at $ComponentEventRequestHandler_11ed1054f72.handle($ComponentEventRequestHandler_11ed1054f72.java) at org.apache.tapestry5.internal.services.ComponentEventDispatcher.dispatch(ComponentEventDispatcher.java:127) at $Dispatcher_11ed1054f74.dispatch($Dispatcher_11ed1054f74.java) at $Dispatcher_11ed1054f60.dispatch($Dispatcher_11ed1054f60.java) at org.apache.tapestry5.services.TapestryModule$17.service(TapestryModule.java:1029) at my.app.gui.services.AppModule$1.service(AppModule.java:115) at $RequestFilter_11ed1054f5f.service($RequestFilter_11ed1054f5f.java) at $RequestHandler_11ed1054f61.service($RequestHandler_11ed1054f61.java) at org.apache.tapestry5.internal.services.LocalizationFilter.service(LocalizationFilter.java:42) at $RequestHandler_11ed1054f61.service($RequestHandler_11ed1054f61.java) at org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:26) at $RequestHandler_11ed1054f61.service($RequestHandler_11ed1054f61.java) at org.apache.tapestry5.services.TapestryModule$3.service(TapestryModule.java:621) at $RequestHandler_11ed1054f61.service($RequestHandler_11ed1054f61.java) at org.apache.tapestry5.services.TapestryModule$2.service(TapestryModule.java:611) at $RequestHandler_11ed1054f61.service($RequestHandler_11ed1054f61.java) at org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:85) at $RequestHandler_11ed1054f61.service($RequestHandler_11ed1054f61.java) at org.equanda.tapestry5.services.EquandaModule$1.service(EquandaModule.java:88) at $RequestFilter_11ed1054f5a.service($RequestFilter_11ed1054f5a.java) at $RequestHandler_11ed1054f61.service($RequestHandler_11ed1054f61.java) at org.equanda.t5gui.services.T5guiModule$7.service(T5guiModule.java:185) at $RequestFilter_11ed1054f59.service($RequestFilter_11ed1054f59.java) at $RequestHandler_11ed1054f61.service($RequestHandler_11ed1054f61.java) at org.chenillekit.access.ChenilleKitAccessModule$1.service(ChenilleKitAccessModule.java:197) at $RequestFilter_11ed1054f58.service($RequestFilter_11ed1054f58.java) at $RequestHandler_11ed1054f61.service($RequestHandler_11ed1054f61.java) at org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:93) at org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:84) at org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:83) at org.apache.tapestry5.internal.services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:106) at $RequestHandler_11ed1054f61.service($RequestHandler_11ed1054f61.java) at $RequestHandler_11ed1054f54.service($RequestHandler_11ed1054f54.java) at org.apache.tapestry
Re: EJB Problem
Hi Geoff!Thank you for replying. Unfortunelly I worked all based on this example, more exactly: 1) I made Tapestry4nonbelievers 2) Changed the DAOs to a version that works with my database 3) migrated from DAO to EJB. Maybe I forgot something, or maybe I did it wrong dunno. Im starting to believe that my problem is the EJBs that have been provided to me, not tapestry. Also, checking BusinessServicesLocator.java, made me think: I would have to rewrite the lookup to locate the EJBs? On Wed, Jan 14, 2009 at 6:37 AM, Geoff Callender < geoff.callender.jumpst...@gmail.com> wrote: > http://jumpstart.doublenegative.com.au:8080/jumpstart/examples/state/ejb3 > > HTH, > Geoff > > > On 14/01/2009, at 6:03 AM, Sid Ferreira wrote: > > Ok, I need to get used about mailing lists... too much years on irc. >> Im trying to, based on Tapestry 4 non believers, fetch all the data to a >> grid. >> Using the same Layout and Start, tried to bind the EJBs, but failed. >> As I said before, it worked only when using a manual lookup and EJB tags >> in >> web.xml. >> >> I really would like to see a 100% tapestry way, cause it means use better >> tool than faces-config and stuff. >> >> On Tue, Jan 13, 2009 at 4:39 PM, Sid Ferreira wrote: >> >> Well, as Uli @ freenode said, that wasn't exactly a smart >>> question.Anyway, >>> I would like some help cause it's strange that the bind works but no data >>> is >>> retrieved. >>> >>> The lookup function is included, if it helps. >>> >>> Ps: Yes, Im a freaking newbie in java, but looking for better techs to my >>> company. >>> >>> thanks in advance. >>> >>> >>> On Tue, Jan 13, 2009 at 4:23 PM, Sid Ferreira wrote: >>> >>> Guys, tried to use EJB 3 in my project and really it was a pain in the ass. After extending the FacadeLocal and the Facade to T5 services, it finally stopped the exceptions, but now I got a boolean thing: If I use bind, it returns no results. If I use lookup (EJB in the xml and an InicialContext.lookup thing) it works with results. What's wrong? http://rapidshare.com/files/182871317/afs.war.html Please, help me to solve this... Or else we'll need to use freaking JSF... Ps: sending sources except EJBs -- Sidney G B Ferreira Desenvolvedor Web - Tibox Innovations >>> >>> -- >>> Sidney G B Ferreira >>> Desenvolvedor Web - Tibox Innovations >>> >>> >>> >> >> -- >> Sidney G B Ferreira >> Desenvolvedor Web - Tibox Innovations >> > > > - > To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org > For additional commands, e-mail: users-h...@tapestry.apache.org > > -- Sidney G B Ferreira Desenvolvedor Web - Tibox Innovations
Re: EJB Problem
http://jumpstart.doublenegative.com.au:8080/jumpstart/examples/state/ejb3 HTH, Geoff On 14/01/2009, at 6:03 AM, Sid Ferreira wrote: Ok, I need to get used about mailing lists... too much years on irc. Im trying to, based on Tapestry 4 non believers, fetch all the data to a grid. Using the same Layout and Start, tried to bind the EJBs, but failed. As I said before, it worked only when using a manual lookup and EJB tags in web.xml. I really would like to see a 100% tapestry way, cause it means use better tool than faces-config and stuff. On Tue, Jan 13, 2009 at 4:39 PM, Sid Ferreira wrote: Well, as Uli @ freenode said, that wasn't exactly a smart question.Anyway, I would like some help cause it's strange that the bind works but no data is retrieved. The lookup function is included, if it helps. Ps: Yes, Im a freaking newbie in java, but looking for better techs to my company. thanks in advance. On Tue, Jan 13, 2009 at 4:23 PM, Sid Ferreira wrote: Guys, tried to use EJB 3 in my project and really it was a pain in the ass. After extending the FacadeLocal and the Facade to T5 services, it finally stopped the exceptions, but now I got a boolean thing: If I use bind, it returns no results. If I use lookup (EJB in the xml and an InicialContext.lookup thing) it works with results. What's wrong? http://rapidshare.com/files/182871317/afs.war.html Please, help me to solve this... Or else we'll need to use freaking JSF... Ps: sending sources except EJBs -- Sidney G B Ferreira Desenvolvedor Web - Tibox Innovations -- Sidney G B Ferreira Desenvolvedor Web - Tibox Innovations -- Sidney G B Ferreira Desenvolvedor Web - Tibox Innovations - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
contributeTranslatorDefaultSource
When upgrading (or trying to) to 5.1.0.0 I get an exception because the TranslatorDefault service no longer exists. What should I replace my contributeTranslatorDefaultSource methods by? Thanks, Joachim -- Joachim Van der Auwera PROGS bvba, progs.be - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org