atom feed24 messages in org.apache.myfaces.devRe: Google SoC
FromSent OnAttachments
Martin MarinschekMar 9, 2010 4:27 am 
Jakob KorherrMar 9, 2010 4:37 am 
Martin MarinschekMar 9, 2010 4:44 am 
Ali OkMar 9, 2010 4:50 am 
Matthias WessendorfMar 9, 2010 5:04 am 
Matthias WessendorfMar 9, 2010 5:07 am 
Martin MarinschekMar 9, 2010 8:18 am 
Jakob KorherrMar 9, 2010 8:32 am 
Werner PunzMar 9, 2010 9:09 am 
Matthias WessendorfMar 9, 2010 9:51 am 
Leonardo UribeMar 9, 2010 10:53 am 
Mario IvankovitsMar 9, 2010 12:07 pm 
Mario IvankovitsMar 9, 2010 12:15 pm 
Gerhard PetracekMar 9, 2010 12:22 pm 
Leonardo UribeMar 9, 2010 12:25 pm 
mama...@oracle.comMar 9, 2010 12:47 pm 
Martin MarinschekMar 10, 2010 11:46 pm 
Martin MarinschekMar 10, 2010 11:48 pm 
Martin MarinschekMar 10, 2010 11:49 pm 
Jakob KorherrMar 11, 2010 6:04 am 
Matthias WessendorfMar 11, 2010 6:16 am 
Leonardo UribeMar 11, 2010 6:39 am 
Matthias WessendorfMar 11, 2010 4:05 pm 
Martin MarinschekMar 29, 2010 5:49 pm 
Subject:Re: Google SoC
From:mama...@oracle.com (mama@oracle.com)
Date:Mar 9, 2010 12:47:56 pm
List:org.apache.myfaces.dev

This is in regard with how Trinidad handle JavaScript free fallback during mobile rendering. Basically, we assign the JavaScript capability for a few mobile user-agents to 'none' in their capability files (Trinidad maintains a capability file for each user-agent). The method supportsScripting determines whether to fallback based on a user-agent's JavaScript capability, and this method is available in org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.XhtmlRenderer.

I guess we can tweak this method based on some configuration parameter to return false to accomplish JavaScript free fallback.

Mechanism behind JavaScript free fallback: The primary purpose of the JavaScript in the client-side is to assign values to parameters like source, event, etc.

1) During fallback rendering, we encode all these parameters and their values to the name attribute of a component. Example, for commandButton, we render: <input type = "submit" name = "source<<encodingkey>><<sourcevalue>>" /> All components that are intended to submit a page are rendered as input element of type 'submit' and their name attributes are encoded with parameters and their values. Also, we render a hidden parameter '_noJavaScript' during form rendering to indicate that parameters are encoded.

2) During page submission, the submitting component's name attribute which contains the encoded parameters will be returned to the server. In the Trinidad filter, we check for the hidden parameter '_noJavaScript', if true, we wrap the incoming httpRequest with a wrapper that decoded these parameters from the name attribute. The wrapper adds these decoded parameters (source, event) to the parameterMap.

Wrapper Class: org.apache.myfaces.trinidadinternal.webapp.wrappers.BasicHTMLBrowserRequestWrapper

Example, a page has two commandButtons, whose source parameters are 'commandButton1' and 'commandButton2' respectively. These commandButtons will be rendered as below: <input type = "submit" name = "source_parameterkeycommandButton1" /> <input type = "submit" name = "source_parameterkeycommandButton2" />

if the page is submitted by commandButton2, the payload will contain 'source_parameterkeycommandButton2'. Hence, the wrapper can decoded the source parameter value to be 'commandButton2'

Hope it helps.

Thanks Mamallan On 3/9/2010 9:51 AM, Matthias Wessendorf wrote:

On Tue, Mar 9, 2010 at 8:19 AM, Martin Marinschek <mmar@apache.org> wrote:

Ok - if you are alright with that, I would have some more proposals. Some starters in the following:

- Partial State Saving performance improvements in MyFaces 2.0 - Implement a JavaScript-Free Fallback in Tomahawk, Trinidad and/or Tobago

Trinidad has some fallback already, however it is only applied when mobile rendering is involved (by user-agent detection of the components). So, we could port that...

Basically, we assign the JavaScript capability for a few mobile user-agents to 'none' in their capability files (Trinidad maintains a capability file for each user-agent). The method supportsScripting which determines whether to fallback based on a user-agent's JavaScript capability is available in org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.XhtmlRenderer.

I guess we can tweak this method based on some configuration parameter to return false to accomplish JavaScript free fallback.

Mechanism behind JavaScript free fallback: The primary purpose of the JavaScript in the client-side is to assign values to parameters like source, event, etc.

1) During fallback rendering, we encode all these parameters and their values to the name attribute of a component. Example, for commandButton, we render: <input type = "submit" name = "source<<encodingkey>><<sourcevalue>>" /> All components that are intended to submit a page are rendered as input element of type 'submit' and their name attributes are encoded with parameters and their values. Also, we render a hidden parameter '_noJavaScript' during form rendering to indicate that parameters are encoded.

2) During page submission, the submitting component's name attribute which contains the encoded parameters will be returned to the server. In the Trinidad filter, we check for the hidden parameter '_noJavaScript', if true, we wrap the incoming httpRequest with a wrapper that decoded these parameters from the name attribute. The wrapper adds these decoded parameters (source, event) to the parameterMap.

Wrapper Class: org.apache.myfaces.trinidadinternal.webapp.wrappers.BasicHTMLBrowserRequestWrapper

Example, a page has two commandButtons, whose source parameters are 'commandButton1' and 'commandButton2' respectively. These commandButtons will be rendered as below: <input type = "submit" name = "source_parameterkeycommandButton1" /> <input type = "submit" name = "source_parameterkeycommandButton2" />

if the page is submitted by commandButton2, the payload will contain 'source_parameterkeycommandButton2'. Hence, the wrapper can decoded the source parameter value to be 'commandButton2'

Hope it helps.

Thanks Mamallan

Thanks Mamallan

- Write (more) new skins for Trinidad

yeah! :-)

- Implement Double-Submit-Handling/Back-Button Handling in one of the MyFaces subprojects - Extend Orchestra use Conversations based on the JSF 2.0 custom scope API, Extend Orchestra to work with Spring Conversations, to do File->New Window Handling

what do you guys think?

best regards,

Martin

On 3/9/10, Matthias Wessendorf <mat@apache.org> wrote:

Hey

On Tue, Mar 9, 2010 at 4:28 AM, Martin Marinschek <mmar@apache.org> wrote:

Hi guys,

question: Google SoC - I saw some administrative mails already, but no real proposals from the MyFaces community (just one proposal by a potential student). So is there something already worked on with regards to this? Are people interested in mentoring students? In getting projects done?

I think we are supposed to use the issue tracker for this year's project - is that true?

yep. I understood the mails that way too. Once the ASF has registered, I think Norin will do that 2day, I will get some wiki to prepare the JIRA entry.

best regards,

Martin

--

http://www.irian.at

Your JSF powerhouse - JSF Consulting, Development and Courses in English and German

Professional Support for Apache MyFaces

blog: http://matthiaswessendorf.wordpress.com/ sessions: http://www.slideshare.net/mwessendorf twitter: http://twitter.com/mwessendorf

--

http://www.irian.at

Your JSF powerhouse - JSF Consulting, Development and Courses in English and German

Professional Support for Apache MyFaces