Page.getAutoIndex() provides a unique number within a page. Why not
just some prefix + autoIndex?
Juergen
On 10/6/06, Igor Vaynberg <[EMAIL PROTECTED]> wrote:
yes, only this is much lighter
-Igor
On 10/6/06, Johan Compagner <[EMAIL PROTECTED]> wrote:
>
> ha! that looks partial to my URLCompressor solution.. (only that does even
> a
> bit more)
>
> johan
>
>
> On 10/6/06, Igor Vaynberg <[EMAIL PROTECTED]> wrote:
> >
> > ive been noticing more and more how rediculously long markup ids are
> > getting
> > in nontrivial pages. i mean a markupid of 50 characters? comon!
> >
> > here is my take on optimizing the length and still keeping it reasonably
> > readeable. once we have support for figuring out if we are in prod or
> dev
> > mode we can optimize it even further by stripping component id.
> >
> > should this go into 1.2? or wait for 1.3? or this idea sucks alltogether
> > and
> > should never see the light of svn?
> >
> > -Igor
> >
> >
> > Index: D:/ws/wicket-1.x/src/java/wicket/Component.java
> > ===================================================================
> > --- D:/ws/wicket-1.x/src/java/wicket/Component.java (revision 7558)
> > +++ D:/ws/wicket-1.x/src/java/wicket/Component.java (working copy)
> > @@ -915,26 +915,12 @@
> > */
> > public String getMarkupId()
> > {
> > - /*
> > - * TODO Post 1.2: Restore the code below after the constructor
> > refactor,
> > - * right now its causing too much pain for components inside
> > listviews
> > - * and borders.
> > - *
> > - * CODE:
> > - *
> > - * String id = getMarkupAttributes().getString("id"); if (id ==
> > null) {
> > - * id = getPageRelativePath(); } return id;
> > - *
> > - * JAVADOC:
> > - *
> > - * If the id attribute is present in the markup attributes of
> > this
> > - * component it will be used, otherwise the page-relative path
> of
> > this
> > - * component will be used. <p>
> > - *
> > - *
> > - */
> > -
> > - return getPageRelativePath().replace(':', '_');
> > + String markupId=(String)getMetaData(MARKUP_ID_KEY);
> > + if (markupId==null) {
> > + markupId=getId()+getPage().nextUniqueValue();
> > + setMetaData(MARKUP_ID_KEY, markupId);
> > + }
> > + return markupId;
> > }
> >
> > /**
> > @@ -1665,6 +1651,13 @@
> > // Call any tag handler
> > onComponentTag(tag);
> >
> > + Iterator handlers =
> > getApplicationSettings().getComponentTagHandlers().iterator();
> > + while (handlers.hasNext())
> > + {
> >
> + ((IComponentTagHandler)handlers.next()).onComponentTag(this,
> > tag);
> > + }
> > +
> > +
> > // If we're an openclose tag
> > if (!tag.isOpenClose() && !tag.isOpen())
> > {
> > @@ -3066,4 +3059,15 @@
> > {
> > setFlag(FLAG_HEAD_RENDERED, false);
> > }
> > +
> > +
> > + /**
> > + * Metadata key used to store/retrieve markup id
> > + */
> > + private static MetaDataKey MARKUP_ID_KEY = new MetaDataKey(
> > String.class
> > )
> > + {
> > +
> > + private static final long serialVersionUID = 1L;
> > +
> > + };
> > }
> > I
> > Index: D:/ws/wicket-1.x/src/java/wicket/Page.java
> > ===================================================================
> > --- D:/ws/wicket-1.x/src/java/wicket/Page.java (revision 7558)
> > +++ D:/ws/wicket-1.x/src/java/wicket/Page.java (working copy)
> > @@ -183,6 +183,10 @@
> > /** Version manager for this page */
> > private IPageVersionManager versionManager;
> >
> > +
> > + /** Counter for generating unique values by calling # */
> > + private int counter;
> > +
> > /**
> > * Constructor.
> > */
> > @@ -240,6 +244,15 @@
> > init(pageMap);
> > }
> >
> > +
> > + /**
> > + * @return unique integer value within the scope of the page
> > + */
> > + public final int nextUniqueValue()
> > + {
> > + return counter++;
> > + }
> > +
> >
> >
>
>