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 (Created) (JIRA)" <de...@myfaces.apache.org> on 2011/09/27 03:20:12 UTC

[jira] [Created] (MYFACES-3330) Generate small generated unique ids for components without explicit ids

Generate small generated unique ids for components without explicit ids
-----------------------------------------------------------------------

                 Key: MYFACES-3330
                 URL: https://issues.apache.org/jira/browse/MYFACES-3330
             Project: MyFaces Core
          Issue Type: Sub-task
          Components: JSR-314
            Reporter: Leonardo Uribe
            Assignee: Leonardo Uribe


To ensure uniqueness, MyFaces uses a unique tag id more associated to a facelet. The effect is each page ends with ids that are too long. For example:

j_id538961478_e4e33bc

It is necessary to provide another strategy to generate component ids as small as possible. It should meet two conditions:

1. They should be unique but
2. The same ids should be generated each time the view is built for comply with PSS algorithm.

How to solve it?

First create a "hierarchical counter" that can generate something like this:

j_id_1
j_id_2
j_id_3
j_id_4
j_id_5_1
j_id_5_2_1
j_id_5_2_2
j_id_5_2_3
j_id_5_3
....
j_id_z

Use the max radix available for a counter, because for a html id we can use:

0123456789abcdefghijklmnopqrstuvwxyz

as valid characters.

This counter does not need to be related to the one used by MARK_CREATED, but the same methods should be used to create additional hierarchies.

This change will improve performance too, because the generated pages will be shorter and we can get rid two maps, so for each tag we remove a map.get call. Additionally, with this strategy we can make PSS algorithm work better, because the final 

component ids will be more stable, and that's very important. There are some corner use cases where to make it work it is required to enable org.apache.myfaces.REFRESH_TRANSIENT_BUILD_ON_PSS and 

org.apache.myfaces.REFRESH_TRANSIENT_BUILD_ON_PSS_PRESERVE_STATE, but with this change we can open the possibility to do not require them at all and reduce even more the state size.


--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Resolved] (MYFACES-3330) Generate small generated unique ids for components without explicit ids

Posted by "Leonardo Uribe (Resolved) (JIRA)" <de...@myfaces.apache.org>.
     [ https://issues.apache.org/jira/browse/MYFACES-3330?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Leonardo Uribe resolved MYFACES-3330.
-------------------------------------

       Resolution: Fixed
    Fix Version/s: 2.1.4
                   2.0.10
    
> Generate small generated unique ids for components without explicit ids
> -----------------------------------------------------------------------
>
>                 Key: MYFACES-3330
>                 URL: https://issues.apache.org/jira/browse/MYFACES-3330
>             Project: MyFaces Core
>          Issue Type: Sub-task
>          Components: JSR-314
>            Reporter: Leonardo Uribe
>            Assignee: Leonardo Uribe
>             Fix For: 2.0.10, 2.1.4
>
>
> To ensure uniqueness, MyFaces uses a unique tag id more associated to a facelet. The effect is each page ends with ids that are too long. For example:
> j_id538961478_e4e33bc
> It is necessary to provide another strategy to generate component ids as small as possible. It should meet two conditions:
> 1. They should be unique but
> 2. The same ids should be generated each time the view is built for comply with PSS algorithm.
> How to solve it?
> First create a "hierarchical counter" that can generate something like this:
> j_id_1
> j_id_2
> j_id_3
> j_id_4
> j_id_5_1
> j_id_5_2_1
> j_id_5_2_2
> j_id_5_2_3
> j_id_5_3
> ....
> j_id_z
> Use the max radix available for a counter, because for a html id we can use:
> 0123456789abcdefghijklmnopqrstuvwxyz
> as valid characters.
> This counter does not need to be related to the one used by MARK_CREATED, but the same methods should be used to create additional hierarchies.
> This change will improve performance too, because the generated pages will be shorter and we can get rid two maps, so for each tag we remove a map.get call. Additionally, with this strategy we can make PSS algorithm work better, because the final 
> component ids will be more stable, and that's very important. There are some corner use cases where to make it work it is required to enable org.apache.myfaces.REFRESH_TRANSIENT_BUILD_ON_PSS and 
> org.apache.myfaces.REFRESH_TRANSIENT_BUILD_ON_PSS_PRESERVE_STATE, but with this change we can open the possibility to do not require them at all and reduce even more the state size.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira