Re: [5.4.25] Ajax submit with Radiogroup submits all values
Just verified again with a simple form like this one: http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/corelib/components/Radio.html =tml= h2Selected type: ${type}/h2 t:zone t:id=formZone t:form t:zone=^ t:id=radioForm t:label for=type /: t:radiogroup t:id=type t:radio t:id=masterCard / t:label for=masterCard / t:radio t:id=visa / t:label for=visa / t:radio t:id=amex / t:label for=amex / t:radio t:id=dinersClub / t:label for=dinersClub / t:radio t:id=discover / t:label for=discover / /t:radiogroup t:submit/ /t:form /t:zone =Java= public enum CardType{MASTER_CARD, VISA, AMERICAN_EXPRESS, DINERS_CLUB, DISCOVER} @InjectComponent private Zone formZone; @Inject private Request request; @Property @Persist private CardType type; public CardType getMasterCard() { return CardType.MASTER_CARD; } public CardType getVisa() { return CardType.VISA; } public CardType getAmex() { return CardType.AMERICAN_EXPRESS; } public CardType getDinersClub() { return CardType.DINERS_CLUB; } public CardType getDiscover() { return CardType.DISCOVER; } Object onSubmitFromRadioForm() { return request.isXHR() ? formZone.getBody() : null; } =Request Form data= t:zoneid:formZone t:submit:[submit_19b3a276fbae1_0,submit_0] t:formdata:hxLFSgWPQ9kZJpyI3CYQavAif/A=:H4sIAFvzloG1XIxBpCS1uEQ/KLW4ID+vOLMs1aqksiC1uIjBIr8oXS+xIDE5I1WvJBEoVFJUaaqXnF+UmpOZBKRzgepT80qK9YISUzLz3YvySwtUglNLSgsmGuzT2cz3+RATA6MPA3dyfl5JUX6OX2JuagmDkE9WYlmifk5iXrp+cElRZl66dUVBCQMLyEo8TjEhwymGpypOndoU/HcfEwNDRUG5BIMYuuHFpUm5mSVA4x2INT4YrEMloCg/ObW4GMwrLs7Mz5sZ/Ely65YWZyYGJh8GjuScTKBqz5RChjpwCKTmpOYCBUAhABYC+VgMYnm8oWWScaKRuVlaUmKqYbxBCQMHVMIAANTuUEWeAQAA *type:MASTER_CARD* *type:VISA* *type:AMERICAN_EXPRESS* *type:DINERS_CLUB* *type:DISCOVER* Looks like the forms.gatherParameters (forms.js) is adding all values - and not just the checked one. I'll create a JIRA. magnus On Thu, Nov 21, 2013 at 11:07 PM, Magnus Kvalheim mag...@kvalheim.euwrote: Hi guys. Just notised a strange issue with radio ajax/zone submit. It submits all values - selected and not selected. - If I disable javascript - then it submits single value. Correct - If I remove form t:zone then it also submits fine. Correct If I enable t:zone then it submits all possible radio values. Please let me know if anyone can confirm. Thanks Magnus
Re: [5.4.25] Ajax submit with Radiogroup submits all values
JIRA is here: https://issues.apache.org/jira/browse/TAP5-2231 On Fri, Nov 22, 2013 at 9:10 AM, Magnus Kvalheim mag...@kvalheim.eu wrote: Just verified again with a simple form like this one: http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/corelib/components/Radio.html =tml= h2Selected type: ${type}/h2 t:zone t:id=formZone t:form t:zone=^ t:id=radioForm t:label for=type /: t:radiogroup t:id=type t:radio t:id=masterCard / t:label for=masterCard / t:radio t:id=visa / t:label for=visa / t:radio t:id=amex / t:label for=amex / t:radio t:id=dinersClub / t:label for=dinersClub / t:radio t:id=discover / t:label for=discover / /t:radiogroup t:submit/ /t:form /t:zone =Java= public enum CardType{MASTER_CARD, VISA, AMERICAN_EXPRESS, DINERS_CLUB, DISCOVER} @InjectComponent private Zone formZone; @Inject private Request request; @Property @Persist private CardType type; public CardType getMasterCard() { return CardType.MASTER_CARD; } public CardType getVisa() { return CardType.VISA; } public CardType getAmex() { return CardType.AMERICAN_EXPRESS; } public CardType getDinersClub() { return CardType.DINERS_CLUB; } public CardType getDiscover() { return CardType.DISCOVER; } Object onSubmitFromRadioForm() { return request.isXHR() ? formZone.getBody() : null; } =Request Form data= t:zoneid:formZone t:submit:[submit_19b3a276fbae1_0,submit_0] t:formdata:hxLFSgWPQ9kZJpyI3CYQavAif/A=:H4sIAFvzloG1XIxBpCS1uEQ/KLW4ID+vOLMs1aqksiC1uIjBIr8oXS+xIDE5I1WvJBEoVFJUaaqXnF+UmpOZBKRzgepT80qK9YISUzLz3YvySwtUglNLSgsmGuzT2cz3+RATA6MPA3dyfl5JUX6OX2JuagmDkE9WYlmifk5iXrp+cElRZl66dUVBCQMLyEo8TjEhwymGpypOndoU/HcfEwNDRUG5BIMYuuHFpUm5mSVA4x2INT4YrEMloCg/ObW4GMwrLs7Mz5sZ/Ely65YWZyYGJh8GjuScTKBqz5RChjpwCKTmpOYCBUAhABYC+VgMYnm8oWWScaKRuVlaUmKqYbxBCQMHVMIAANTuUEWeAQAA *type:MASTER_CARD* *type:VISA* *type:AMERICAN_EXPRESS* *type:DINERS_CLUB* *type:DISCOVER* Looks like the forms.gatherParameters (forms.js) is adding all values - and not just the checked one. I'll create a JIRA. magnus On Thu, Nov 21, 2013 at 11:07 PM, Magnus Kvalheim mag...@kvalheim.euwrote: Hi guys. Just notised a strange issue with radio ajax/zone submit. It submits all values - selected and not selected. - If I disable javascript - then it submits single value. Correct - If I remove form t:zone then it also submits fine. Correct If I enable t:zone then it submits all possible radio values. Please let me know if anyone can confirm. Thanks Magnus
Re: The Rise and Fall of Tapestry
7. Why Howard finally embraced Wicket and started using it in his clients' projects. Drink a shot! 8. When Tapestry became Wicketstry Drink a shot! or Tapwickstry. ... and another!
Re: The Rise and Fall of Tapestry
I came to Tapestry from Wicket after reading such a trolling email but I could never thank the guy. If it were you Emmanuel, then thank you. On Nov 22, 2013, at 3:05 PM, Lance Java wrote: 7. Why Howard finally embraced Wicket and started using it in his clients' projects. Drink a shot! 8. When Tapestry became Wicketstry Drink a shot! or Tapwickstry. ... and another!
Re: [5.4.25] Ajax submit with Radiogroup submits all values
So, was looking into fixing this myself as a temporary workaround. I think the fix is quite clean, and of interest for others in similar situation, so I'll briefly post it. -- What I wanted to do was to make a modified version of forms.coffee and contribute/override that somehow. The forms.coffee mod is quite simple: (line 77) Replace: return if type is checkbox field.checked() is false with: return if (type is checkbox || type is radio) field.checked() is false Then contribute to JavascriptStack like so @Contribute(JavaScriptStack.class) @Core public static void setupCoreJavaScriptStack(OrderedConfigurationStackExtension configuration) { configuration.override(t5/core/forms, new StackExtension(StackExtensionType.MODULE, t5-custom/core/forms)); } However, t5/core/forms is not actually added to the stack so I had to look elsewhere. The solution: Set and alias path on Requirejs config for forms module Thiagos RequireJs config contribution have now made this possible, https://issues.apache.org/jira/browse/TAP5-2196 jsSupport.addModuleConfigurationCallback(new ModuleConfigurationCallback() { @Override public JSONObject configure(JSONObject configuration) { JSONObject paths = (JSONObject) configuration.opt(paths); if(paths==null) paths = new JSONObject(); paths.put(t5/core/forms, t5-custom/core/forms); configuration.put(paths, paths); return configuration; } }); Just great, thanks again Thiago :-) On Fri, Nov 22, 2013 at 9:34 AM, Magnus Kvalheim mag...@kvalheim.eu wrote: JIRA is here: https://issues.apache.org/jira/browse/TAP5-2231 On Fri, Nov 22, 2013 at 9:10 AM, Magnus Kvalheim mag...@kvalheim.euwrote: Just verified again with a simple form like this one: http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/corelib/components/Radio.html =tml= h2Selected type: ${type}/h2 t:zone t:id=formZone t:form t:zone=^ t:id=radioForm t:label for=type /: t:radiogroup t:id=type t:radio t:id=masterCard / t:label for=masterCard / t:radio t:id=visa / t:label for=visa / t:radio t:id=amex / t:label for=amex / t:radio t:id=dinersClub / t:label for=dinersClub / t:radio t:id=discover / t:label for=discover / /t:radiogroup t:submit/ /t:form /t:zone =Java= public enum CardType{MASTER_CARD, VISA, AMERICAN_EXPRESS, DINERS_CLUB, DISCOVER} @InjectComponent private Zone formZone; @Inject private Request request; @Property @Persist private CardType type; public CardType getMasterCard() { return CardType.MASTER_CARD; } public CardType getVisa() { return CardType.VISA; } public CardType getAmex() { return CardType.AMERICAN_EXPRESS; } public CardType getDinersClub() { return CardType.DINERS_CLUB; } public CardType getDiscover() { return CardType.DISCOVER; } Object onSubmitFromRadioForm() { return request.isXHR() ? formZone.getBody() : null; } =Request Form data= t:zoneid:formZone t:submit:[submit_19b3a276fbae1_0,submit_0] t:formdata:hxLFSgWPQ9kZJpyI3CYQavAif/A=:H4sIAFvzloG1XIxBpCS1uEQ/KLW4ID+vOLMs1aqksiC1uIjBIr8oXS+xIDE5I1WvJBEoVFJUaaqXnF+UmpOZBKRzgepT80qK9YISUzLz3YvySwtUglNLSgsmGuzT2cz3+RATA6MPA3dyfl5JUX6OX2JuagmDkE9WYlmifk5iXrp+cElRZl66dUVBCQMLyEo8TjEhwymGpypOndoU/HcfEwNDRUG5BIMYuuHFpUm5mSVA4x2INT4YrEMloCg/ObW4GMwrLs7Mz5sZ/Ely65YWZyYGJh8GjuScTKBqz5RChjpwCKTmpOYCBUAhABYC+VgMYnm8oWWScaKRuVlaUmKqYbxBCQMHVMIAANTuUEWeAQAA *type:MASTER_CARD* *type:VISA* *type:AMERICAN_EXPRESS* *type:DINERS_CLUB* *type:DISCOVER* Looks like the forms.gatherParameters (forms.js) is adding all values - and not just the checked one. I'll create a JIRA. magnus On Thu, Nov 21, 2013 at 11:07 PM, Magnus Kvalheim mag...@kvalheim.euwrote: Hi guys. Just notised a strange issue with radio ajax/zone submit. It submits all values - selected and not selected. - If I disable javascript - then it submits single value. Correct - If I remove form t:zone then it also submits fine. Correct If I enable t:zone then it submits all possible radio values. Please let me know if anyone can confirm. Thanks Magnus
Re: [5.4.25] Ajax submit with Radiogroup submits all values
Why not submit a patch, now that you've spent the time figuring it out? On Fri, Nov 22, 2013 at 12:07 PM, Magnus Kvalheim mag...@kvalheim.euwrote: So, was looking into fixing this myself as a temporary workaround. I think the fix is quite clean, and of interest for others in similar situation, so I'll briefly post it. -- What I wanted to do was to make a modified version of forms.coffee and contribute/override that somehow. The forms.coffee mod is quite simple: (line 77) Replace: return if type is checkbox field.checked() is false with: return if (type is checkbox || type is radio) field.checked() is false Then contribute to JavascriptStack like so @Contribute(JavaScriptStack.class) @Core public static void setupCoreJavaScriptStack(OrderedConfigurationStackExtension configuration) { configuration.override(t5/core/forms, new StackExtension(StackExtensionType.MODULE, t5-custom/core/forms)); } However, t5/core/forms is not actually added to the stack so I had to look elsewhere. The solution: Set and alias path on Requirejs config for forms module Thiagos RequireJs config contribution have now made this possible, https://issues.apache.org/jira/browse/TAP5-2196 jsSupport.addModuleConfigurationCallback(new ModuleConfigurationCallback() { @Override public JSONObject configure(JSONObject configuration) { JSONObject paths = (JSONObject) configuration.opt(paths); if(paths==null) paths = new JSONObject(); paths.put(t5/core/forms, t5-custom/core/forms); configuration.put(paths, paths); return configuration; } }); Just great, thanks again Thiago :-) On Fri, Nov 22, 2013 at 9:34 AM, Magnus Kvalheim mag...@kvalheim.eu wrote: JIRA is here: https://issues.apache.org/jira/browse/TAP5-2231 On Fri, Nov 22, 2013 at 9:10 AM, Magnus Kvalheim mag...@kvalheim.eu wrote: Just verified again with a simple form like this one: http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/corelib/components/Radio.html =tml= h2Selected type: ${type}/h2 t:zone t:id=formZone t:form t:zone=^ t:id=radioForm t:label for=type /: t:radiogroup t:id=type t:radio t:id=masterCard / t:label for=masterCard / t:radio t:id=visa / t:label for=visa / t:radio t:id=amex / t:label for=amex / t:radio t:id=dinersClub / t:label for=dinersClub / t:radio t:id=discover / t:label for=discover / /t:radiogroup t:submit/ /t:form /t:zone =Java= public enum CardType{MASTER_CARD, VISA, AMERICAN_EXPRESS, DINERS_CLUB, DISCOVER} @InjectComponent private Zone formZone; @Inject private Request request; @Property @Persist private CardType type; public CardType getMasterCard() { return CardType.MASTER_CARD; } public CardType getVisa() { return CardType.VISA; } public CardType getAmex() { return CardType.AMERICAN_EXPRESS; } public CardType getDinersClub() { return CardType.DINERS_CLUB; } public CardType getDiscover() { return CardType.DISCOVER; } Object onSubmitFromRadioForm() { return request.isXHR() ? formZone.getBody() : null; } =Request Form data= t:zoneid:formZone t:submit:[submit_19b3a276fbae1_0,submit_0] t:formdata:hxLFSgWPQ9kZJpyI3CYQavAif/A=:H4sIAFvzloG1XIxBpCS1uEQ/KLW4ID+vOLMs1aqksiC1uIjBIr8oXS+xIDE5I1WvJBEoVFJUaaqXnF+UmpOZBKRzgepT80qK9YISUzLz3YvySwtUglNLSgsmGuzT2cz3+RATA6MPA3dyfl5JUX6OX2JuagmDkE9WYlmifk5iXrp+cElRZl66dUVBCQMLyEo8TjEhwymGpypOndoU/HcfEwNDRUG5BIMYuuHFpUm5mSVA4x2INT4YrEMloCg/ObW4GMwrLs7Mz5sZ/Ely65YWZyYGJh8GjuScTKBqz5RChjpwCKTmpOYCBUAhABYC+VgMYnm8oWWScaKRuVlaUmKqYbxBCQMHVMIAANTuUEWeAQAA *type:MASTER_CARD* *type:VISA* *type:AMERICAN_EXPRESS* *type:DINERS_CLUB* *type:DISCOVER* Looks like the forms.gatherParameters (forms.js) is adding all values - and not just the checked one. I'll create a JIRA. magnus On Thu, Nov 21, 2013 at 11:07 PM, Magnus Kvalheim mag...@kvalheim.eu wrote: Hi guys. Just notised a strange issue with radio ajax/zone submit. It submits all values - selected and not selected. - If I disable javascript - then it submits single value. Correct - If I remove form t:zone then it also submits fine. Correct If I enable t:zone then it submits all possible radio values. Please let me know if anyone can confirm. Thanks Magnus
Re: [5.4.25] Ajax submit with Radiogroup submits all values
Hi Chris, yes sure - will do that in the Jira. I think also the solution is interesting because it shows what's possible now with more flexible requirejs config on Tapestry side. One obvious use case for paths is to configure 'local' paths for thirdparty amd modules which themselves express dependencies. (But can also be used to 'patch' tapestry modules as mentioned here) On Fri, Nov 22, 2013 at 12:20 PM, Chris Poulsen mailingl...@nesluop.dkwrote: Why not submit a patch, now that you've spent the time figuring it out? On Fri, Nov 22, 2013 at 12:07 PM, Magnus Kvalheim mag...@kvalheim.eu wrote: So, was looking into fixing this myself as a temporary workaround. I think the fix is quite clean, and of interest for others in similar situation, so I'll briefly post it. -- What I wanted to do was to make a modified version of forms.coffee and contribute/override that somehow. The forms.coffee mod is quite simple: (line 77) Replace: return if type is checkbox field.checked() is false with: return if (type is checkbox || type is radio) field.checked() is false Then contribute to JavascriptStack like so @Contribute(JavaScriptStack.class) @Core public static void setupCoreJavaScriptStack(OrderedConfigurationStackExtension configuration) { configuration.override(t5/core/forms, new StackExtension(StackExtensionType.MODULE, t5-custom/core/forms)); } However, t5/core/forms is not actually added to the stack so I had to look elsewhere. The solution: Set and alias path on Requirejs config for forms module Thiagos RequireJs config contribution have now made this possible, https://issues.apache.org/jira/browse/TAP5-2196 jsSupport.addModuleConfigurationCallback(new ModuleConfigurationCallback() { @Override public JSONObject configure(JSONObject configuration) { JSONObject paths = (JSONObject) configuration.opt(paths); if(paths==null) paths = new JSONObject(); paths.put(t5/core/forms, t5-custom/core/forms); configuration.put(paths, paths); return configuration; } }); Just great, thanks again Thiago :-) On Fri, Nov 22, 2013 at 9:34 AM, Magnus Kvalheim mag...@kvalheim.eu wrote: JIRA is here: https://issues.apache.org/jira/browse/TAP5-2231 On Fri, Nov 22, 2013 at 9:10 AM, Magnus Kvalheim mag...@kvalheim.eu wrote: Just verified again with a simple form like this one: http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/corelib/components/Radio.html =tml= h2Selected type: ${type}/h2 t:zone t:id=formZone t:form t:zone=^ t:id=radioForm t:label for=type /: t:radiogroup t:id=type t:radio t:id=masterCard / t:label for=masterCard / t:radio t:id=visa / t:label for=visa / t:radio t:id=amex / t:label for=amex / t:radio t:id=dinersClub / t:label for=dinersClub / t:radio t:id=discover / t:label for=discover / /t:radiogroup t:submit/ /t:form /t:zone =Java= public enum CardType{MASTER_CARD, VISA, AMERICAN_EXPRESS, DINERS_CLUB, DISCOVER} @InjectComponent private Zone formZone; @Inject private Request request; @Property @Persist private CardType type; public CardType getMasterCard() { return CardType.MASTER_CARD; } public CardType getVisa() { return CardType.VISA; } public CardType getAmex() { return CardType.AMERICAN_EXPRESS; } public CardType getDinersClub() { return CardType.DINERS_CLUB; } public CardType getDiscover() { return CardType.DISCOVER; } Object onSubmitFromRadioForm() { return request.isXHR() ? formZone.getBody() : null; } =Request Form data= t:zoneid:formZone t:submit:[submit_19b3a276fbae1_0,submit_0] t:formdata:hxLFSgWPQ9kZJpyI3CYQavAif/A=:H4sIAFvzloG1XIxBpCS1uEQ/KLW4ID+vOLMs1aqksiC1uIjBIr8oXS+xIDE5I1WvJBEoVFJUaaqXnF+UmpOZBKRzgepT80qK9YISUzLz3YvySwtUglNLSgsmGuzT2cz3+RATA6MPA3dyfl5JUX6OX2JuagmDkE9WYlmifk5iXrp+cElRZl66dUVBCQMLyEo8TjEhwymGpypOndoU/HcfEwNDRUG5BIMYuuHFpUm5mSVA4x2INT4YrEMloCg/ObW4GMwrLs7Mz5sZ/Ely65YWZyYGJh8GjuScTKBqz5RChjpwCKTmpOYCBUAhABYC+VgMYnm8oWWScaKRuVlaUmKqYbxBCQMHVMIAANTuUEWeAQAA *type:MASTER_CARD* *type:VISA* *type:AMERICAN_EXPRESS* *type:DINERS_CLUB* *type:DISCOVER* Looks like the forms.gatherParameters (forms.js) is adding all values - and not just the checked one. I'll create a JIRA. magnus On Thu, Nov 21, 2013 at 11:07 PM, Magnus Kvalheim mag...@kvalheim.eu wrote: Hi guys. Just notised a strange issue with radio ajax/zone submit. It submits all values - selected and not selected. - If I disable javascript - then it submits single value. Correct - If I remove form t:zone then it also submits fine. Correct If I enable t:zone then it submits all possible radio values. Please let me know if anyone can confirm. Thanks Magnus
Re: Web frameworks
Good Lord, I did't know that Tapestry list had a let's have fun topic like this one! :-) Emmanuel, it is not that you *(...) won't cite anything about that interview (...)*. You just *can't* because it just exists in your head. You call Howard coward and Thiago (who is my personal friend from a long time) a liar but you are acting the *same* (and I don't think that Howard is a coward and I *know* that Thiago is not a liar). Never one person here threatened another one and you're using this excuse as a way to run away from the responsability of presenting facts when *you can't*. Even if Tapestry is not relevant in the web framework space (and I'm not saying it isn't), there are a lot to be learned with it (and its IOC framework), with its community (which is very supportive, well behaved -- except from you -- and intelligent), reading the source codes and learning incredible solutions that are the result of the work of great minds. Atenciosamente, Matheus Eduardo Machado Moreira matheus@gmail.com 2013/11/21 Muhammad Gelbana m.gelb...@gmail.com Tapestry is an idea Mr. Emmanuel and Ideas are troll proof. *-* *Muhammad Gelbana* http://www.linkedin.com/in/mgelbana On Thu, Nov 21, 2013 at 1:05 PM, Peter Hvass p.hv...@albourne.com wrote: Wooow! What is this inane crap? :D This is hilarious in general on all sides! The best bit was discovering this wiki page; http://wiki.apache.org/tapestry/Tapestry5Trolls Have been giggling with a colleague over this today. :) - Original Message - From: ICE Ernesto Arteaga Zavala arterza...@gmail.com To: Tapestry users users@tapestry.apache.org Sent: Thursday, November 21, 2013 1:03:04 AM Subject: Re: Web frameworks Emmanuel, Then have sex with Wicket and let us work with the framework we prefer... 2013/11/20 Emmanuel Sowah eso...@gmail.com And let me clarify some more about live class reloading in Wicket. Wicket has 2 modes- development and production. When you turn on development mode, it reloads classes live. So don't fool yourself and others to think Tapestry is the only framework that does live class reloading. On Wed, Nov 20, 2013 at 10:18 PM, Thiago H de Paula Figueiredo thiag...@gmail.com wrote: On Wed, 20 Nov 2013 19:04:30 -0200, Emmanuel Sowah eso...@gmail.com wrote: Don't listen to Thiago, he is just blowing hot air. Tapestry is no more relevant, as can be seen in the article: http://zeroturnaround.com/rebellabs/the-2014-decision- makers-guide-to-java-web-frameworks/ As you may see, Tapestry is not mentioned anywhere in that article. A single article shouldn't be the single decision point of any decision. Not to mention that ZeroTurnaround provides a tool that provides live class reloading, which Tapestry already does for some scenarios. What about Vaadin, GWT or Wicket? Drink another shot! :D Thiago, please stop misleading people. Now you're calling me a liar or something by accusing me of misleading people. That's rude, specially in a medium which is archived for many years to come, and most people don't like rude people. You're being so pathetic the only feeling I have right now about you isn't anger. It's pity. Tapestry is just dying a slow death. Even Howard admitted that in a recent interview. [citation needed] -- Thiago H. de Paula Figueiredo Tapestry, Java and Hibernate consultant and developer http://machina.com.br - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org -- Saludos, --- Nada que se consiga sin pena y sin trabajo es verdaderamente valioso. Joseph Addison --- ICE Ernesto Arteaga Zavala Ingeniero de Desarrollo
Re: [5.4.25] Ajax submit with Radiogroup submits all values
Cool! Seems like the right way to go, now that you did almost all the work anyway :) On Fri, Nov 22, 2013 at 12:31 PM, Magnus Kvalheim mag...@movellas.comwrote: Hi Chris, yes sure - will do that in the Jira. I think also the solution is interesting because it shows what's possible now with more flexible requirejs config on Tapestry side. One obvious use case for paths is to configure 'local' paths for thirdparty amd modules which themselves express dependencies. (But can also be used to 'patch' tapestry modules as mentioned here) On Fri, Nov 22, 2013 at 12:20 PM, Chris Poulsen mailingl...@nesluop.dk wrote: Why not submit a patch, now that you've spent the time figuring it out? On Fri, Nov 22, 2013 at 12:07 PM, Magnus Kvalheim mag...@kvalheim.eu wrote: So, was looking into fixing this myself as a temporary workaround. I think the fix is quite clean, and of interest for others in similar situation, so I'll briefly post it. -- What I wanted to do was to make a modified version of forms.coffee and contribute/override that somehow. The forms.coffee mod is quite simple: (line 77) Replace: return if type is checkbox field.checked() is false with: return if (type is checkbox || type is radio) field.checked() is false Then contribute to JavascriptStack like so @Contribute(JavaScriptStack.class) @Core public static void setupCoreJavaScriptStack(OrderedConfigurationStackExtension configuration) { configuration.override(t5/core/forms, new StackExtension(StackExtensionType.MODULE, t5-custom/core/forms)); } However, t5/core/forms is not actually added to the stack so I had to look elsewhere. The solution: Set and alias path on Requirejs config for forms module Thiagos RequireJs config contribution have now made this possible, https://issues.apache.org/jira/browse/TAP5-2196 jsSupport.addModuleConfigurationCallback(new ModuleConfigurationCallback() { @Override public JSONObject configure(JSONObject configuration) { JSONObject paths = (JSONObject) configuration.opt(paths); if(paths==null) paths = new JSONObject(); paths.put(t5/core/forms, t5-custom/core/forms); configuration.put(paths, paths); return configuration; } }); Just great, thanks again Thiago :-) On Fri, Nov 22, 2013 at 9:34 AM, Magnus Kvalheim mag...@kvalheim.eu wrote: JIRA is here: https://issues.apache.org/jira/browse/TAP5-2231 On Fri, Nov 22, 2013 at 9:10 AM, Magnus Kvalheim mag...@kvalheim.eu wrote: Just verified again with a simple form like this one: http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/corelib/components/Radio.html =tml= h2Selected type: ${type}/h2 t:zone t:id=formZone t:form t:zone=^ t:id=radioForm t:label for=type /: t:radiogroup t:id=type t:radio t:id=masterCard / t:label for=masterCard / t:radio t:id=visa / t:label for=visa / t:radio t:id=amex / t:label for=amex / t:radio t:id=dinersClub / t:label for=dinersClub / t:radio t:id=discover / t:label for=discover / /t:radiogroup t:submit/ /t:form /t:zone =Java= public enum CardType{MASTER_CARD, VISA, AMERICAN_EXPRESS, DINERS_CLUB, DISCOVER} @InjectComponent private Zone formZone; @Inject private Request request; @Property @Persist private CardType type; public CardType getMasterCard() { return CardType.MASTER_CARD; } public CardType getVisa() { return CardType.VISA; } public CardType getAmex() { return CardType.AMERICAN_EXPRESS; } public CardType getDinersClub() { return CardType.DINERS_CLUB; } public CardType getDiscover() { return CardType.DISCOVER; } Object onSubmitFromRadioForm() { return request.isXHR() ? formZone.getBody() : null; } =Request Form data= t:zoneid:formZone t:submit:[submit_19b3a276fbae1_0,submit_0] t:formdata:hxLFSgWPQ9kZJpyI3CYQavAif/A=:H4sIAFvzloG1XIxBpCS1uEQ/KLW4ID+vOLMs1aqksiC1uIjBIr8oXS+xIDE5I1WvJBEoVFJUaaqXnF+UmpOZBKRzgepT80qK9YISUzLz3YvySwtUglNLSgsmGuzT2cz3+RATA6MPA3dyfl5JUX6OX2JuagmDkE9WYlmifk5iXrp+cElRZl66dUVBCQMLyEo8TjEhwymGpypOndoU/HcfEwNDRUG5BIMYuuHFpUm5mSVA4x2INT4YrEMloCg/ObW4GMwrLs7Mz5sZ/Ely65YWZyYGJh8GjuScTKBqz5RChjpwCKTmpOYCBUAhABYC+VgMYnm8oWWScaKRuVlaUmKqYbxBCQMHVMIAANTuUEWeAQAA *type:MASTER_CARD* *type:VISA* *type:AMERICAN_EXPRESS* *type:DINERS_CLUB* *type:DISCOVER* Looks like the forms.gatherParameters (forms.js) is adding all values - and not just the checked one. I'll create a JIRA. magnus On Thu, Nov 21, 2013 at 11:07 PM, Magnus Kvalheim mag...@kvalheim.eu wrote: Hi guys. Just notised a strange issue with radio ajax/zone submit. It submits all values - selected and not selected.
Re: 5.4 Bug with select nested inside form loop.
Probably best to see some code before calling it a bug. Perhaps you are initializing a variable in its declaration (instead of @SetupRender) or possibly a @Persist issue?
Tapetsry IoC starting a class with background task that uses an injected service
I have a utility class that recieves emails with a background TimerTask that needs to invoke a method on one of my injected DAOs to store the messages in the db. How do I get this class to load when I start my app and make sure the injected services are set? With EagerLoad the class gets instantiated but of course the services are null. John
Re: Tapetsry IoC starting a class with background task that uses an injected service
Put it to ParallelExecutor? http://tapestry.apache.org/parallel-execution.html http://blog.tapestry5.de/index.php/2011/09/18/scheduling-jobs-with-tapestry/ There's also Quartz scheduler support: https://github.com/anjlab/anjlab-tapestry-commons/tree/master/anjlab-tapestry-quartz On Fri, Nov 22, 2013 at 8:03 PM, John j...@quivinco.com wrote: I have a utility class that recieves emails with a background TimerTask that needs to invoke a method on one of my injected DAOs to store the messages in the db. How do I get this class to load when I start my app and make sure the injected services are set? With EagerLoad the class gets instantiated but of course the services are null. John -- Dmitry Gusev AnjLab Team http://anjlab.com
Re: Tapetsry IoC starting a class with background task that uses an injected service
I don't believe eager loading loads a service without it's dependencies injected. Try starting your background service in a @Startup annotation method in your module's class. Starting your service just means calling one of it's methods. *-* *Muhammad Gelbana* http://www.linkedin.com/in/mgelbana On Fri, Nov 22, 2013 at 6:03 PM, John j...@quivinco.com wrote: I have a utility class that recieves emails with a background TimerTask that needs to invoke a method on one of my injected DAOs to store the messages in the db. How do I get this class to load when I start my app and make sure the injected services are set? With EagerLoad the class gets instantiated but of course the services are null. John
Re: 5.4 Bug with select nested inside form loop.
I would like to share some additional details related to this issue. I'm finding after removing a row and refreshing the page the selected option is marked selected in the html correctly, however the option displayed in the select menu is the former select option from the previously deleted row. I'm not sure why the selected option is being ignored. If I change the ajaxformloop to a loop and refresh the page, all my select options the appear to be correct. Below is the code used to reproduce the bug. How I to reproduce it. Add 3 rows. Row 1. Select Mobile - Type test1 Row 2. Select Home - Type test2 Row 3 Select Fax - Type test3 Save results Remove Row 1 Refresh page. Notice how the results change to the following. Row 1. Select Mobile - Type test2 Row 2. Select Home - Type test3 Code used to reproduce bug. tml html t:type=layout title=AjaxFormLoopDemo xmlns:t= http://tapestry.apache.org/schema/tapestry_5_1_0.xsd; xmlns:p=tapestry:parameter t:form t:id=form div t:type=ajaxformloop t:id=phones source=person.phones value=phone encoder=encoder t:select t:id=type model=selectModel value=phone.phoneType/ t:textfield t:id=number value=phone.number/ t:removerowlinkremove/t:removerowlink /div input type=submit value=Update/ /t:form /html java public class AjaxFormLoopDemo { @Property private Phone phone; @PageActivationContext @Property private Person person; @Inject private SelectModelFactory selectModelFactory; @Inject private Session session; void onPrepare() { if (person == null) { person = new Person(); } ListPhoneType phoneTypes = session.createCriteria(PhoneType.class).addOrder(Order.desc(id)).list(); if (phoneTypes.isEmpty()) { setupPhoneTypes(); } } @CommitAfter public void setupPhoneTypes() { PhoneType phoneType = new PhoneType(HOME); session.save(phoneType); phoneType = new PhoneType(MOBILE); session.save(phoneType); phoneType = new PhoneType(FAX); session.save(phoneType); } @CommitAfter public void onSuccess() { session.saveOrUpdate(person); } public SelectModel getSelectModel() { ListPhoneType phoneTypes = session.createCriteria(PhoneType.class).addOrder(Order.asc(type)).list(); return selectModelFactory.create(phoneTypes, type); } Object onAddRow() { return new Phone(person); } @CommitAfter void onRemoveRow(Phone phone) { person.getPhones().remove(phone); session.delete(phone); } public ValueEncoderPhone getEncoder() { return new ValueEncoderPhone() { @Override public String toClient(Phone v) { Long id = v.getId(); return id != null ? id.toString() : v.getTempId().toString(); } @Override public Phone toValue(String toValue) { Long id = Long.parseLong(toValue); if (id 0) { Phone phone = (Phone) session.get(Phone.class, id); return phone; } Phone phone = new Phone(person); person.getPhones().add(phone); return phone; } }; } } Person entity @Entity public class Person implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; @OneToMany(mappedBy = person, cascade = CascadeType.ALL, orphanRemoval = true) @OrderBy(id) private ListPhone phones; @Transient private Long tempId = -System.nanoTime(); public Person() { } public Long getTempId() { return tempId; } public void setTempId(Long tempId) { this.tempId = tempId; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public ListPhone getPhones() { if (phones == null) { phones = new ArrayList(); } return phones; } public void setPhones(ListPhone phones) { this.phones = phones; } } Phone Entity @Entity public class Phone implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; @ManyToOne @JoinColumn(name = phone_type_id) private PhoneType phoneType; @ManyToOne @JoinColumn(name = person_id) private Person person; private String number; @Transient private Long tempId = -System.nanoTime(); public Phone() { } public Phone(Person person) { this.person = person; } public Person getPerson() { return person; } public void setPerson(Person person) { this.person = person; }
Re: Tapetsry IoC starting a class with background task that uses an injected service
On Fri, 22 Nov 2013 14:03:10 -0200, John j...@quivinco.com wrote: How do I get this class to load when I start my app and make sure the injected services are set? With EagerLoad the class gets instantiated but of course the services are null. This statement is not correct as far as I know. Tapestry-IoC injects service proxies (when the service is defined by an interface), so the dependencies may not even be initialized yet, but, when you first call them, they will be initialized. -- Thiago H. de Paula Figueiredo Tapestry, Java and Hibernate consultant and developer http://machina.com.br - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: The Rise and Fall of Tapestry
On Fri, 22 Nov 2013 05:37:11 -0200, Peter Hvass p.hv...@albourne.com wrote: demon enclosure that is Tapestry with its patron lord of darkness Howard. I also want a cool title like that! :D -- Thiago H. de Paula Figueiredo Tapestry, Java and Hibernate consultant and developer http://machina.com.br - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: Tapetsry IoC starting a class with background task that uses an injected service
I need my setup method to run when this class is instantiated but log is null so mailDAO will also be null. John public class EmailReceiverUtil { public static final int SHOW_MESSAGES = 1; public static final int CLEAR_MESSAGES = 2; public static final int SHOW_AND_CLEAR = SHOW_MESSAGES + CLEAR_MESSAGES; /** * The log. */ @Inject private Logger log; @Inject private MailDAO mailDAO; /** * Mail properties */ Properties props = new Properties(); /** * Timer for background task; */ Timer timer = new Timer(); public EmailReceiverUtil() { System.out.println(EmailReceiverUtil instantiated); } @EagerLoad public void setup() { // configure properties props.put(mail.user, John); props.put(mail.host, diskstation); props.put(mail.debug, false); props.put(mail.store.protocol, pop3); timer.schedule(new MailReceiverThread(), 1000, 6); log.info(Email Receiver running); } private void checkInbox(int mode) ... } private boolean processPlainTextMessage(final String from, final String to, final String subject, final String message) { try { String messageText = message; return mailDAO.processIncomingMail(from, to, messageText); } catch (DAOException ex) { ex.printStackTrace(); } return false; } class MailReceiverThread extends TimerTask { public void run() { try { checkInbox(CLEAR_MESSAGES); } catch (Exception ex) { ex.printStackTrace(); } } } } - Original Message - From: Thiago H de Paula Figueiredo To: Tapestry users Sent: Friday, November 22, 2013 5:26 PM Subject: Re: Tapetsry IoC starting a class with background task that uses an injected service On Fri, 22 Nov 2013 14:03:10 -0200, John j...@quivinco.com wrote: How do I get this class to load when I start my app and make sure the injected services are set? With EagerLoad the class gets instantiated but of course the services are null. This statement is not correct as far as I know. Tapestry-IoC injects service proxies (when the service is defined by an interface), so the dependencies may not even be initialized yet, but, when you first call them, they will be initialized. -- Thiago H. de Paula Figueiredo Tapestry, Java and Hibernate consultant and developer http://machina.com.br - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: Tapetsry IoC starting a class with background task that uses an injected service
On Fri, 22 Nov 2013 15:47:10 -0200, John j...@quivinco.com wrote: I need my setup method to run when this class is instantiated but log is null so mailDAO will also be null. Weird. Maybe the @EagerLoad-annotated method is being called before the field injection is done. If that's really the case, that's a bug. By the way, why don't you receive the dependencies through the consturctor? That's my preferred way to do injection in services and it avoids problems like you're having. I don't think I ever used @Inject in a service. -- Thiago H. de Paula Figueiredo Tapestry, Java and Hibernate consultant and developer http://machina.com.br - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: Tapetsry IoC starting a class with background task that uses an injected service
@EagerLoad is for service builder methods: http://tapestry.apache.org/5.3.7/apidocs/org/apache/tapestry5/ioc/annotations/EagerLoad.html Don't use TimeTask, use Tapestry's PeriodicExecutor with http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/annotations/Startup.html On Fri, Nov 22, 2013 at 9:47 PM, John j...@quivinco.com wrote: I need my setup method to run when this class is instantiated but log is null so mailDAO will also be null. John public class EmailReceiverUtil { public static final int SHOW_MESSAGES = 1; public static final int CLEAR_MESSAGES = 2; public static final int SHOW_AND_CLEAR = SHOW_MESSAGES + CLEAR_MESSAGES; /** * The log. */ @Inject private Logger log; @Inject private MailDAO mailDAO; /** * Mail properties */ Properties props = new Properties(); /** * Timer for background task; */ Timer timer = new Timer(); public EmailReceiverUtil() { System.out.println(EmailReceiverUtil instantiated); } @EagerLoad public void setup() { // configure properties props.put(mail.user, John); props.put(mail.host, diskstation); props.put(mail.debug, false); props.put(mail.store.protocol, pop3); timer.schedule(new MailReceiverThread(), 1000, 6); log.info(Email Receiver running); } private void checkInbox(int mode) ... } private boolean processPlainTextMessage(final String from, final String to, final String subject, final String message) { try { String messageText = message; return mailDAO.processIncomingMail(from, to, messageText); } catch (DAOException ex) { ex.printStackTrace(); } return false; } class MailReceiverThread extends TimerTask { public void run() { try { checkInbox(CLEAR_MESSAGES); } catch (Exception ex) { ex.printStackTrace(); } } } } - Original Message - From: Thiago H de Paula Figueiredo To: Tapestry users Sent: Friday, November 22, 2013 5:26 PM Subject: Re: Tapetsry IoC starting a class with background task that uses an injected service On Fri, 22 Nov 2013 14:03:10 -0200, John j...@quivinco.com wrote: How do I get this class to load when I start my app and make sure the injected services are set? With EagerLoad the class gets instantiated but of course the services are null. This statement is not correct as far as I know. Tapestry-IoC injects service proxies (when the service is defined by an interface), so the dependencies may not even be initialized yet, but, when you first call them, they will be initialized. -- Thiago H. de Paula Figueiredo Tapestry, Java and Hibernate consultant and developer http://machina.com.br - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org -- Dmitry Gusev AnjLab Team http://anjlab.com
Re: The Rise and Fall of Tapestry
You need professional help. That's my contribution. 2013/11/21 Emmanuel Sowah eso...@gmail.com Hi guys, Tapestry did not make it to a recent Web frameworks report released by Zeroturnaround found here: http://zeroturnaround.com/rebellabs/the-2014-decision-makers-guide-to-java-web-frameworks/ . This to me, and many others, is the clearest evidence yet that Tapestry has failed and that Tapestry is no more relevant. Tapestry, once a rising star with huge following, is reduced to rags with a very small cult following. Users of Tapestry now are mostly newbies to Java or just finished school and playing about with some home hobby projects. Or people, like Thiago H de Paula Figueiredo, who write applications not used by more than 3 people. Now, to hammer the last nails on Tapestry's coffin, I've decide to write a blog with the title: *The Rise and Fall of Tapestry*. The paragraphs I would discuss include: 1. The begin 2. How Tapestry betrayed it's users by breaking existing code base at any major release. 3. The arrogance of Howard Lewis *Ship* 4. When the 'H' in Howard became 'C' to form Coward. 5. When the Ship sank. 4. How Tapestry became a one-man project 5. Migration path to other web frameworks 6. How Tapestry would be remembered. 7. Why Howard finally embraced Wicket and started using it in his clients' projects. 8. When Tapestry became Wicketstry or Tapwickstry. ... I want to have 10 points to write about in my blog. Please feel free to suggest some other points for me. I have to mention that I will strictly moderate comments on my blog in order to filter out venomous comments from Tapestry cult trolls like the ones I've seen here the last few days. Please contribute. Cheers
Re: The Rise and Fall of Tapestry
LOOOL @ Thiago :D *-* *Muhammad Gelbana* http://www.linkedin.com/in/mgelbana On Fri, Nov 22, 2013 at 8:20 PM, Borut Bolčina borut.bolc...@gmail.comwrote: You need professional help. That's my contribution. 2013/11/21 Emmanuel Sowah eso...@gmail.com Hi guys, Tapestry did not make it to a recent Web frameworks report released by Zeroturnaround found here: http://zeroturnaround.com/rebellabs/the-2014-decision-makers-guide-to-java-web-frameworks/ . This to me, and many others, is the clearest evidence yet that Tapestry has failed and that Tapestry is no more relevant. Tapestry, once a rising star with huge following, is reduced to rags with a very small cult following. Users of Tapestry now are mostly newbies to Java or just finished school and playing about with some home hobby projects. Or people, like Thiago H de Paula Figueiredo, who write applications not used by more than 3 people. Now, to hammer the last nails on Tapestry's coffin, I've decide to write a blog with the title: *The Rise and Fall of Tapestry*. The paragraphs I would discuss include: 1. The begin 2. How Tapestry betrayed it's users by breaking existing code base at any major release. 3. The arrogance of Howard Lewis *Ship* 4. When the 'H' in Howard became 'C' to form Coward. 5. When the Ship sank. 4. How Tapestry became a one-man project 5. Migration path to other web frameworks 6. How Tapestry would be remembered. 7. Why Howard finally embraced Wicket and started using it in his clients' projects. 8. When Tapestry became Wicketstry or Tapwickstry. ... I want to have 10 points to write about in my blog. Please feel free to suggest some other points for me. I have to mention that I will strictly moderate comments on my blog in order to filter out venomous comments from Tapestry cult trolls like the ones I've seen here the last few days. Please contribute. Cheers
Re: Tapetsry IoC starting a class with background task that uses an injected service
That's my preferred way to do injection in services and it avoids problems like you're having If you do that, you'll have to refactor your constructor parameters and assignment statement if you remove\add a new service. It should be a lot easier to use @Inject private MyService svc; If using a constructor makes sure that all passed services (as parameters to the constructor) are proxied and ready to be instantiated, then so should injecting a service as a class member (i.e. as the 2 lines of code I wrote earlier), they should behave the same, else it would be a bug, exactly like you said. The only case I know where one MUST use a service's constructor to pass a dependency, is when you need the logger service injected. *-* *Muhammad Gelbana* http://www.linkedin.com/in/mgelbana On Fri, Nov 22, 2013 at 7:55 PM, Dmitry Gusev dmitry.gu...@gmail.comwrote: @EagerLoad is for service builder methods: http://tapestry.apache.org/5.3.7/apidocs/org/apache/tapestry5/ioc/annotations/EagerLoad.html Don't use TimeTask, use Tapestry's PeriodicExecutor with http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/annotations/Startup.html On Fri, Nov 22, 2013 at 9:47 PM, John j...@quivinco.com wrote: I need my setup method to run when this class is instantiated but log is null so mailDAO will also be null. John public class EmailReceiverUtil { public static final int SHOW_MESSAGES = 1; public static final int CLEAR_MESSAGES = 2; public static final int SHOW_AND_CLEAR = SHOW_MESSAGES + CLEAR_MESSAGES; /** * The log. */ @Inject private Logger log; @Inject private MailDAO mailDAO; /** * Mail properties */ Properties props = new Properties(); /** * Timer for background task; */ Timer timer = new Timer(); public EmailReceiverUtil() { System.out.println(EmailReceiverUtil instantiated); } @EagerLoad public void setup() { // configure properties props.put(mail.user, John); props.put(mail.host, diskstation); props.put(mail.debug, false); props.put(mail.store.protocol, pop3); timer.schedule(new MailReceiverThread(), 1000, 6); log.info(Email Receiver running); } private void checkInbox(int mode) ... } private boolean processPlainTextMessage(final String from, final String to, final String subject, final String message) { try { String messageText = message; return mailDAO.processIncomingMail(from, to, messageText); } catch (DAOException ex) { ex.printStackTrace(); } return false; } class MailReceiverThread extends TimerTask { public void run() { try { checkInbox(CLEAR_MESSAGES); } catch (Exception ex) { ex.printStackTrace(); } } } } - Original Message - From: Thiago H de Paula Figueiredo To: Tapestry users Sent: Friday, November 22, 2013 5:26 PM Subject: Re: Tapetsry IoC starting a class with background task that uses an injected service On Fri, 22 Nov 2013 14:03:10 -0200, John j...@quivinco.com wrote: How do I get this class to load when I start my app and make sure the injected services are set? With EagerLoad the class gets instantiated but of course the services are null. This statement is not correct as far as I know. Tapestry-IoC injects service proxies (when the service is defined by an interface), so the dependencies may not even be initialized yet, but, when you first call them, they will be initialized. -- Thiago H. de Paula Figueiredo Tapestry, Java and Hibernate consultant and developer http://machina.com.br - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org -- Dmitry Gusev AnjLab Team http://anjlab.com
Re: The Rise and Fall of Tapestry
Hi guys, To my huge surprise, I've received many contributions to my upcoming blog post and I want to thank all of you that did that. Of course I welcome some more. So if you haven't sent a contribution please do so. Like the others did, send them to my email address. I'll keep it confidential so no need to worry. I'm still working on the blog post. I will post the link here on the mailing list after I publish it. Again, thanks to all that mailed me their contributions. Cheers On Thu, Nov 21, 2013 at 11:31 PM, Emmanuel Sowah eso...@gmail.com wrote: Hi guys, Tapestry did not make it to a recent Web frameworks report released by Zeroturnaround found here: http://zeroturnaround.com/rebellabs/the-2014-decision-makers-guide-to-java-web-frameworks/ . This to me, and many others, is the clearest evidence yet that Tapestry has failed and that Tapestry is no more relevant. Tapestry, once a rising star with huge following, is reduced to rags with a very small cult following. Users of Tapestry now are mostly newbies to Java or just finished school and playing about with some home hobby projects. Or people, like Thiago H de Paula Figueiredo, who write applications not used by more than 3 people. Now, to hammer the last nails on Tapestry's coffin, I've decide to write a blog with the title: *The Rise and Fall of Tapestry*. The paragraphs I would discuss include: 1. The begin 2. How Tapestry betrayed it's users by breaking existing code base at any major release. 3. The arrogance of Howard Lewis *Ship* 4. When the 'H' in Howard became 'C' to form Coward. 5. When the Ship sank. 4. How Tapestry became a one-man project 5. Migration path to other web frameworks 6. How Tapestry would be remembered. 7. Why Howard finally embraced Wicket and started using it in his clients' projects. 8. When Tapestry became Wicketstry or Tapwickstry. ... I want to have 10 points to write about in my blog. Please feel free to suggest some other points for me. I have to mention that I will strictly moderate comments on my blog in order to filter out venomous comments from Tapestry cult trolls like the ones I've seen here the last few days. Please contribute. Cheers
Re: The Rise and Fall of Tapestry
Great. Let's hear what all your Anonymous Cowards have to say. On Fri, Nov 22, 2013 at 1:03 PM, Emmanuel Sowah eso...@gmail.com wrote: Hi guys, To my huge surprise, I've received many contributions to my upcoming blog post and I want to thank all of you that did that. Of course I welcome some more. So if you haven't sent a contribution please do so. Like the others did, send them to my email address. I'll keep it confidential so no need to worry. I'm still working on the blog post. I will post the link here on the mailing list after I publish it. Again, thanks to all that mailed me their contributions. Cheers On Thu, Nov 21, 2013 at 11:31 PM, Emmanuel Sowah eso...@gmail.com wrote: Hi guys, Tapestry did not make it to a recent Web frameworks report released by Zeroturnaround found here: http://zeroturnaround.com/rebellabs/the-2014-decision-makers-guide-to-java-web-frameworks/ . This to me, and many others, is the clearest evidence yet that Tapestry has failed and that Tapestry is no more relevant. Tapestry, once a rising star with huge following, is reduced to rags with a very small cult following. Users of Tapestry now are mostly newbies to Java or just finished school and playing about with some home hobby projects. Or people, like Thiago H de Paula Figueiredo, who write applications not used by more than 3 people. Now, to hammer the last nails on Tapestry's coffin, I've decide to write a blog with the title: *The Rise and Fall of Tapestry*. The paragraphs I would discuss include: 1. The begin 2. How Tapestry betrayed it's users by breaking existing code base at any major release. 3. The arrogance of Howard Lewis *Ship* 4. When the 'H' in Howard became 'C' to form Coward. 5. When the Ship sank. 4. How Tapestry became a one-man project 5. Migration path to other web frameworks 6. How Tapestry would be remembered. 7. Why Howard finally embraced Wicket and started using it in his clients' projects. 8. When Tapestry became Wicketstry or Tapwickstry. ... I want to have 10 points to write about in my blog. Please feel free to suggest some other points for me. I have to mention that I will strictly moderate comments on my blog in order to filter out venomous comments from Tapestry cult trolls like the ones I've seen here the last few days. Please contribute. Cheers
Re: The Rise and Fall of Tapestry
Well I am sure his imaginary friend this he is cool On Fri, Nov 22, 2013 at 8:10 PM, Jon Williams williams.jonat...@gmail.comwrote: Great. Let's hear what all your Anonymous Cowards have to say. On Fri, Nov 22, 2013 at 1:03 PM, Emmanuel Sowah eso...@gmail.com wrote: Hi guys, To my huge surprise, I've received many contributions to my upcoming blog post and I want to thank all of you that did that. Of course I welcome some more. So if you haven't sent a contribution please do so. Like the others did, send them to my email address. I'll keep it confidential so no need to worry. I'm still working on the blog post. I will post the link here on the mailing list after I publish it. Again, thanks to all that mailed me their contributions. Cheers On Thu, Nov 21, 2013 at 11:31 PM, Emmanuel Sowah eso...@gmail.com wrote: Hi guys, Tapestry did not make it to a recent Web frameworks report released by Zeroturnaround found here: http://zeroturnaround.com/rebellabs/the-2014-decision-makers-guide-to-java-web-frameworks/ . This to me, and many others, is the clearest evidence yet that Tapestry has failed and that Tapestry is no more relevant. Tapestry, once a rising star with huge following, is reduced to rags with a very small cult following. Users of Tapestry now are mostly newbies to Java or just finished school and playing about with some home hobby projects. Or people, like Thiago H de Paula Figueiredo, who write applications not used by more than 3 people. Now, to hammer the last nails on Tapestry's coffin, I've decide to write a blog with the title: *The Rise and Fall of Tapestry*. The paragraphs I would discuss include: 1. The begin 2. How Tapestry betrayed it's users by breaking existing code base at any major release. 3. The arrogance of Howard Lewis *Ship* 4. When the 'H' in Howard became 'C' to form Coward. 5. When the Ship sank. 4. How Tapestry became a one-man project 5. Migration path to other web frameworks 6. How Tapestry would be remembered. 7. Why Howard finally embraced Wicket and started using it in his clients' projects. 8. When Tapestry became Wicketstry or Tapwickstry. ... I want to have 10 points to write about in my blog. Please feel free to suggest some other points for me. I have to mention that I will strictly moderate comments on my blog in order to filter out venomous comments from Tapestry cult trolls like the ones I've seen here the last few days. Please contribute. Cheers -- Sincerely *Boris Horvat*
Re: 5.4 Bug with select nested inside form loop.
Why is your encoder calling person.getPhones().add(phone)??? That looks totally dodgy!
Re: 5.4 Bug with select nested inside form loop.
Without that line the phone object never gets added to the person object prior to commit. Do you know of a better approach? On Fri, Nov 22, 2013 at 2:20 PM, Lance Java lance.j...@googlemail.comwrote: Why is your encoder calling person.getPhones().add(phone)??? That looks totally dodgy! -- George Christman www.CarDaddy.com P.O. Box 735 Johnstown, New York
Re: Web frameworks
Hi Matheus, Well, I didn't call Thiago a liar. I personally don't know him but I won't doubt that he's a nice guy. At least one can sense that from the way he composes his mails. What I know, for sure, is that Howard is a coward. He has a double agenda. He doesn't practise what he preaches. He preaches Tapestry to his cult members here but practises Wicket on his clients' projects. And admit that too in an interview. I hate the way he uses Thiago like a slave. He sits there and act like a dictator. He even looks like Saddam Hussein, the dead dictator of Iraq. Some years back, he used Jesse Kuhnert also like a slave until Jesse saw the light and abandoned the sinking Ship. Jesse left already in 2008 to a better Web framework. So Matteus, tell your friend to quit, like Jesse did. He's a smart guy, I think, and doesn't deserve to be treated like that. I hope when he leaves, all the other cult members would disperse like flies. Cheers On Fri, Nov 22, 2013 at 2:18 PM, Matheus Eduardo Machado Moreira matheus@gmail.com wrote: Good Lord, I did't know that Tapestry list had a let's have fun topic like this one! :-) Emmanuel, it is not that you *(...) won't cite anything about that interview (...)*. You just *can't* because it just exists in your head. You call Howard coward and Thiago (who is my personal friend from a long time) a liar but you are acting the *same* (and I don't think that Howard is a coward and I *know* that Thiago is not a liar). Never one person here threatened another one and you're using this excuse as a way to run away from the responsability of presenting facts when *you can't*. Even if Tapestry is not relevant in the web framework space (and I'm not saying it isn't), there are a lot to be learned with it (and its IOC framework), with its community (which is very supportive, well behaved -- except from you -- and intelligent), reading the source codes and learning incredible solutions that are the result of the work of great minds. Atenciosamente, Matheus Eduardo Machado Moreira matheus@gmail.com 2013/11/21 Muhammad Gelbana m.gelb...@gmail.com Tapestry is an idea Mr. Emmanuel and Ideas are troll proof. *-* *Muhammad Gelbana* http://www.linkedin.com/in/mgelbana On Thu, Nov 21, 2013 at 1:05 PM, Peter Hvass p.hv...@albourne.com wrote: Wooow! What is this inane crap? :D This is hilarious in general on all sides! The best bit was discovering this wiki page; http://wiki.apache.org/tapestry/Tapestry5Trolls Have been giggling with a colleague over this today. :) - Original Message - From: ICE Ernesto Arteaga Zavala arterza...@gmail.com To: Tapestry users users@tapestry.apache.org Sent: Thursday, November 21, 2013 1:03:04 AM Subject: Re: Web frameworks Emmanuel, Then have sex with Wicket and let us work with the framework we prefer... 2013/11/20 Emmanuel Sowah eso...@gmail.com And let me clarify some more about live class reloading in Wicket. Wicket has 2 modes- development and production. When you turn on development mode, it reloads classes live. So don't fool yourself and others to think Tapestry is the only framework that does live class reloading. On Wed, Nov 20, 2013 at 10:18 PM, Thiago H de Paula Figueiredo thiag...@gmail.com wrote: On Wed, 20 Nov 2013 19:04:30 -0200, Emmanuel Sowah eso...@gmail.com wrote: Don't listen to Thiago, he is just blowing hot air. Tapestry is no more relevant, as can be seen in the article: http://zeroturnaround.com/rebellabs/the-2014-decision- makers-guide-to-java-web-frameworks/ As you may see, Tapestry is not mentioned anywhere in that article. A single article shouldn't be the single decision point of any decision. Not to mention that ZeroTurnaround provides a tool that provides live class reloading, which Tapestry already does for some scenarios. What about Vaadin, GWT or Wicket? Drink another shot! :D Thiago, please stop misleading people. Now you're calling me a liar or something by accusing me of misleading people. That's rude, specially in a medium which is archived for many years to come, and most people don't like rude people. You're being so pathetic the only feeling I have right now about you isn't anger. It's pity. Tapestry is just dying a slow death. Even Howard admitted that in a recent interview. [citation needed] -- Thiago H. de Paula Figueiredo Tapestry, Java and Hibernate consultant and developer http://machina.com.br - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail:
Re: Web frameworks
Emmanuel Sowah, please provide me with a side by side comparison of the code, some basic tapestry stuff and the equivalent in wicket. Maybe throw a component into the mix such as the AjaxFormLoop, I'd like to see how you would code it up in Tapestry5.4 and the equivalent in wicket. I'd like to make my own assessment, not one from you. On Fri, Nov 22, 2013 at 2:28 PM, Emmanuel Sowah eso...@gmail.com wrote: Hi Matheus, Well, I didn't call Thiago a liar. I personally don't know him but I won't doubt that he's a nice guy. At least one can sense that from the way he composes his mails. What I know, for sure, is that Howard is a coward. He has a double agenda. He doesn't practise what he preaches. He preaches Tapestry to his cult members here but practises Wicket on his clients' projects. And admit that too in an interview. I hate the way he uses Thiago like a slave. He sits there and act like a dictator. He even looks like Saddam Hussein, the dead dictator of Iraq. Some years back, he used Jesse Kuhnert also like a slave until Jesse saw the light and abandoned the sinking Ship. Jesse left already in 2008 to a better Web framework. So Matteus, tell your friend to quit, like Jesse did. He's a smart guy, I think, and doesn't deserve to be treated like that. I hope when he leaves, all the other cult members would disperse like flies. Cheers On Fri, Nov 22, 2013 at 2:18 PM, Matheus Eduardo Machado Moreira matheus@gmail.com wrote: Good Lord, I did't know that Tapestry list had a let's have fun topic like this one! :-) Emmanuel, it is not that you *(...) won't cite anything about that interview (...)*. You just *can't* because it just exists in your head. You call Howard coward and Thiago (who is my personal friend from a long time) a liar but you are acting the *same* (and I don't think that Howard is a coward and I *know* that Thiago is not a liar). Never one person here threatened another one and you're using this excuse as a way to run away from the responsability of presenting facts when *you can't*. Even if Tapestry is not relevant in the web framework space (and I'm not saying it isn't), there are a lot to be learned with it (and its IOC framework), with its community (which is very supportive, well behaved -- except from you -- and intelligent), reading the source codes and learning incredible solutions that are the result of the work of great minds. Atenciosamente, Matheus Eduardo Machado Moreira matheus@gmail.com 2013/11/21 Muhammad Gelbana m.gelb...@gmail.com Tapestry is an idea Mr. Emmanuel and Ideas are troll proof. *-* *Muhammad Gelbana* http://www.linkedin.com/in/mgelbana On Thu, Nov 21, 2013 at 1:05 PM, Peter Hvass p.hv...@albourne.com wrote: Wooow! What is this inane crap? :D This is hilarious in general on all sides! The best bit was discovering this wiki page; http://wiki.apache.org/tapestry/Tapestry5Trolls Have been giggling with a colleague over this today. :) - Original Message - From: ICE Ernesto Arteaga Zavala arterza...@gmail.com To: Tapestry users users@tapestry.apache.org Sent: Thursday, November 21, 2013 1:03:04 AM Subject: Re: Web frameworks Emmanuel, Then have sex with Wicket and let us work with the framework we prefer... 2013/11/20 Emmanuel Sowah eso...@gmail.com And let me clarify some more about live class reloading in Wicket. Wicket has 2 modes- development and production. When you turn on development mode, it reloads classes live. So don't fool yourself and others to think Tapestry is the only framework that does live class reloading. On Wed, Nov 20, 2013 at 10:18 PM, Thiago H de Paula Figueiredo thiag...@gmail.com wrote: On Wed, 20 Nov 2013 19:04:30 -0200, Emmanuel Sowah eso...@gmail.com wrote: Don't listen to Thiago, he is just blowing hot air. Tapestry is no more relevant, as can be seen in the article: http://zeroturnaround.com/rebellabs/the-2014-decision- makers-guide-to-java-web-frameworks/ As you may see, Tapestry is not mentioned anywhere in that article. A single article shouldn't be the single decision point of any decision. Not to mention that ZeroTurnaround provides a tool that provides live class reloading, which Tapestry already does for some scenarios. What about Vaadin, GWT or Wicket? Drink another shot! :D Thiago, please stop misleading people. Now you're calling me a liar or something by accusing me of misleading people. That's rude, specially in a medium which is archived for many years to come, and most people don't like rude people. You're being so
Re: 5.4 Bug with select nested inside form loop.
I didn't take the time to fully understand your code but a ValueEncoder's role is solely to serialize between clientside string and serverside object. Nothing more.
Re: The Rise and Fall of Tapestry
+1 :-) Atenciosamente, Matheus Eduardo Machado Moreira matheus@gmail.com 2013/11/22 Borut Bolčina borut.bolc...@gmail.com You need professional help. That's my contribution. 2013/11/21 Emmanuel Sowah eso...@gmail.com Hi guys, Tapestry did not make it to a recent Web frameworks report released by Zeroturnaround found here: http://zeroturnaround.com/rebellabs/the-2014-decision-makers-guide-to-java-web-frameworks/ . This to me, and many others, is the clearest evidence yet that Tapestry has failed and that Tapestry is no more relevant. Tapestry, once a rising star with huge following, is reduced to rags with a very small cult following. Users of Tapestry now are mostly newbies to Java or just finished school and playing about with some home hobby projects. Or people, like Thiago H de Paula Figueiredo, who write applications not used by more than 3 people. Now, to hammer the last nails on Tapestry's coffin, I've decide to write a blog with the title: *The Rise and Fall of Tapestry*. The paragraphs I would discuss include: 1. The begin 2. How Tapestry betrayed it's users by breaking existing code base at any major release. 3. The arrogance of Howard Lewis *Ship* 4. When the 'H' in Howard became 'C' to form Coward. 5. When the Ship sank. 4. How Tapestry became a one-man project 5. Migration path to other web frameworks 6. How Tapestry would be remembered. 7. Why Howard finally embraced Wicket and started using it in his clients' projects. 8. When Tapestry became Wicketstry or Tapwickstry. ... I want to have 10 points to write about in my blog. Please feel free to suggest some other points for me. I have to mention that I will strictly moderate comments on my blog in order to filter out venomous comments from Tapestry cult trolls like the ones I've seen here the last few days. Please contribute. Cheers
Re: Web frameworks
On Fri, 22 Nov 2013 17:28:22 -0200, Emmanuel Sowah eso...@gmail.com wrote: What I know, for sure, is that Howard is a coward. He has a double agenda. He doesn't practise what he preaches. He preaches Tapestry to his cult members here but practises Wicket on his clients' projects. And admit that too in an interview. I hate the way he uses Thiago like a slave. Don't let my wife know about that! She called dibs on my slavery! :D He sits there and act like a dictator. He even looks like Saddam Hussein, the dead dictator of Iraq. Both have beards. I can see the similarity . . . :P -- Thiago H. de Paula Figueiredo Tapestry, Java and Hibernate consultant and developer http://machina.com.br - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: 5.4 Bug with select nested inside form loop.
I'm assuming you know that the encoder is fired every time a conversion between clientside id and serverside object is done. This includes your delete action etc.
Re: 5.4 Bug with select nested inside form loop.
Yes I'm aware and I'm also aware the encoder is fired twice while adding a row, once for the row and a second time for the remove action. The ajaxformloop has never seemed to be straight forward, I'm always interested in a simpler approach. Do you believe this may be the cause of the issue? On Fri, Nov 22, 2013 at 3:02 PM, Lance Java lance.j...@googlemail.comwrote: I'm assuming you know that the encoder is fired every time a conversion between clientside id and serverside object is done. This includes your delete action etc. -- George Christman www.CarDaddy.com P.O. Box 735 Johnstown, New York
Re: 5.4 Bug with select nested inside form loop.
Your on :) you can just paypal me haha. Well the value encoder doesn't appear to be the issue. :( I can completely remove the encoder parameter from the component and refresh the page and it will still hold on to the wrong result despite the correct select option being selected in the select menu. I tried clearing my browser cache as well, no change. Should I file a bug report with JIRA? On Fri, Nov 22, 2013 at 3:24 PM, Lance Java lance.j...@googlemail.comwrote: As I said... I haven't taken the time to fully understand the code. That being said, I'd be willing to bet you a fiver that it's causing the issue :) -- George Christman www.CarDaddy.com P.O. Box 735 Johnstown, New York
Re: The Rise and Fall of Tapestry
7 years of trolling and hating. Common dude, grow up and get a life On 11/23/2013 2:50 AM, Matheus Eduardo Machado Moreira wrote: +1 :-) Atenciosamente, Matheus Eduardo Machado Moreira matheus@gmail.com 2013/11/22 Borut Bolčina borut.bolc...@gmail.com You need professional help. That's my contribution. 2013/11/21 Emmanuel Sowah eso...@gmail.com Hi guys, Tapestry did not make it to a recent Web frameworks report released by Zeroturnaround found here: http://zeroturnaround.com/rebellabs/the-2014-decision-makers-guide-to-java-web-frameworks/ . This to me, and many others, is the clearest evidence yet that Tapestry has failed and that Tapestry is no more relevant. Tapestry, once a rising star with huge following, is reduced to rags with a very small cult following. Users of Tapestry now are mostly newbies to Java or just finished school and playing about with some home hobby projects. Or people, like Thiago H de Paula Figueiredo, who write applications not used by more than 3 people. Now, to hammer the last nails on Tapestry's coffin, I've decide to write a blog with the title: *The Rise and Fall of Tapestry*. The paragraphs I would discuss include: 1. The begin 2. How Tapestry betrayed it's users by breaking existing code base at any major release. 3. The arrogance of Howard Lewis *Ship* 4. When the 'H' in Howard became 'C' to form Coward. 5. When the Ship sank. 4. How Tapestry became a one-man project 5. Migration path to other web frameworks 6. How Tapestry would be remembered. 7. Why Howard finally embraced Wicket and started using it in his clients' projects. 8. When Tapestry became Wicketstry or Tapwickstry. ... I want to have 10 points to write about in my blog. Please feel free to suggest some other points for me. I have to mention that I will strictly moderate comments on my blog in order to filter out venomous comments from Tapestry cult trolls like the ones I've seen here the last few days. Please contribute. Cheers - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org