| From | Sent On | Attachments |
|---|---|---|
| Martin Marinschek | Mar 9, 2010 4:27 am | |
| Jakob Korherr | Mar 9, 2010 4:37 am | |
| Martin Marinschek | Mar 9, 2010 4:44 am | |
| Ali Ok | Mar 9, 2010 4:50 am | |
| Matthias Wessendorf | Mar 9, 2010 5:04 am | |
| Matthias Wessendorf | Mar 9, 2010 5:07 am | |
| Martin Marinschek | Mar 9, 2010 8:18 am | |
| Jakob Korherr | Mar 9, 2010 8:32 am | |
| Werner Punz | Mar 9, 2010 9:09 am | |
| Matthias Wessendorf | Mar 9, 2010 9:51 am | |
| Leonardo Uribe | Mar 9, 2010 10:53 am | |
| Mario Ivankovits | Mar 9, 2010 12:07 pm | |
| Mario Ivankovits | Mar 9, 2010 12:15 pm | |
| Gerhard Petracek | Mar 9, 2010 12:22 pm | |
| Leonardo Uribe | Mar 9, 2010 12:25 pm | |
| mama...@oracle.com | Mar 9, 2010 12:47 pm | |
| Martin Marinschek | Mar 10, 2010 11:46 pm | |
| Martin Marinschek | Mar 10, 2010 11:48 pm | |
| Martin Marinschek | Mar 10, 2010 11:49 pm | |
| Jakob Korherr | Mar 11, 2010 6:04 am | |
| Matthias Wessendorf | Mar 11, 2010 6:16 am | |
| Leonardo Uribe | Mar 11, 2010 6:39 am | |
| Matthias Wessendorf | Mar 11, 2010 4:05 pm | |
| Martin Marinschek | Mar 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.
-Matthias
best regards,
Martin
--
Your JSF powerhouse - JSF Consulting, Development and Courses in English and German
Professional Support for Apache MyFaces
-- Matthias Wessendorf
blog: http://matthiaswessendorf.wordpress.com/ sessions: http://www.slideshare.net/mwessendorf twitter: http://twitter.com/mwessendorf
--
Your JSF powerhouse - JSF Consulting, Development and Courses in English and German
Professional Support for Apache MyFaces





