You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@myfaces.apache.org by "Leonardo Uribe (JIRA)" <de...@myfaces.apache.org> on 2010/05/21 02:54:16 UTC

[jira] Resolved: (TOMAHAWK-1504) Update autoscroll feature to JSF 2

     [ https://issues.apache.org/jira/browse/TOMAHAWK-1504?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Leonardo Uribe resolved TOMAHAWK-1504.
--------------------------------------

    Resolution: Fixed

After multiple attemps and review some stuff in myfaces core, I added a new component called t:autoScrollPage. It attach a view listener for PostAddToViewEvents and a component listener to viewRoot, to make the view listener be restored each time. I think this is the cleanest solution for this issue.

> Update autoscroll feature to JSF 2
> ----------------------------------
>
>                 Key: TOMAHAWK-1504
>                 URL: https://issues.apache.org/jira/browse/TOMAHAWK-1504
>             Project: MyFaces Tomahawk
>          Issue Type: Improvement
>          Components: JSF2
>    Affects Versions: 1.1.9
>            Reporter: Leonardo Uribe
>            Assignee: Leonardo Uribe
>             Fix For: 1.1.10-SNAPSHOT
>
>         Attachments: TOMAHAWK-1504-1.patch
>
>
> In jsf 1.1. and 1.2, autoscroll behavior had the following problems:
> - It is myfaces specific feature, because requires add some code on renderers. In ri it will not work
> - It only works for h:commandXXX and t:commandXXX components, so if you use trinidad (override h:commandXXX renderers) it will not work.
> - Since it requires render some javascript at the end of <body> tag, it requires use DefaultAddResource or <t:documentBody>
> With jsf 2.0 we have the chance to get rid all this problems and make this feature work with other libraries.
> First a short review about this feature. To make it work, it requires the following points:
> - Render an <input type="hidden" name="autoScroll" /> that will contain the position on the page (x,y)
> - Render a function called getScrolling() ant the end of the page that calculate the value and optionally render the command that scroll.
> - Render the script on each link to call getScrolling() function and assign its value to the hidden field (using oamSetHiddenInput).
> The idea include add the following code:
> - Create a new client behavior tag called t:autoscroll that adds the script required on each "command" component.
> - Create a new component that just render the hidden field. It will be added as a component resource.
> - Create a new component that render autoScroll script. It will be added as a component resource.
> - Add some code on ResourceViewHandler, to add the two previous components to the component tree as transient each time the view is rendered, but only if org.apache.myfaces.AUTO_SCROLL web param is true or t:autoscroll is used on the current page.
> Now, the proposal will work in following scenarios like this:
> - org.apache.myfaces.AUTO_SCROLL is enabled, myfaces core is used, so all h:commandXXX and t:commandXXX works like in jsf 1.1 and jsf 1.2.
> - org.apache.myfaces.AUTO_SCROLL is disabled and myfaces core is used, hidden field and script will be added only if t:autoscroll is used. By default, h:commandXXX and t:commandXXX will not have autoscroll script, so t:autoscroll is required to add this script.
> - RI (Mojarra) is used, hidden field and script will be added only if t:autoscroll is used. By default, h:commandXXX and t:commandXXX will not have autoscroll script, so t:autoscroll is required to add this script.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.