Thank you kindly both for your suggestions.

@Martin Terra
I'm not sure I quite undstand what you mean. My hope was that I don't have to 
add any of the involved components to the Java code of every single panel. The 
example I've given is just one of many. We have many different constellation 
with completly different html fragments but each of them has the same problem, 
that somewhere in there the html ID of one html tag has to be put into the html 
attribute of another html tag.

@Martin Grigorov
The problem I'm having with doing it on the client with javascript or with the 
IResponseFilter is that by that time I can only work on the fully assembled 
html. If a Wicket page includes the same panel multiple times though, I would 
already have the same html ID and the same reference to it multiple times in 
the final html without a (bullet proof) way to figure out which two elements 
ultimatively belong together.

That's why I was hoping there would be a way to do this on a panel level, maybe 
with a custom attribute. Something like
<section wicket:aria-labelledby="sectionheader">
  <h1 wicket:auto-id="sectionheader">
</section>

If I'd then have a page which has the same panel twice in it, Wicket would take 
care of assinging unique IDs and also putting these generated unique IDs in the 
corresponding attributes that reference them, resulting in something like this:
<section aria-labelledby="sectionheader1">
  <h1 id="sectionheader1">
</section>
<section aria-labelledby="sectionheader2">
  <h1 id="sectionheader2">
</section>

If there is something like the IResponseFilter but on a per component base 
which would allow me to inspect and modify only the html fragment of a 
component/panel it might work.

Kind regards,
Daniel 


Gesendet: Mittwoch, 29. Juni 2022 um 15:40 Uhr
Von: "Martin Grigorov" <mgrigo...@apache.org>
An: users@wicket.apache.org
Betreff: Re: Automatically insert generated html IDs in other places in html 
file
Hi,

The easiest way I could imagine is with a short jQuery function that is
called on domready.

If you need to do it on the server side then maybe with IResponseFilter.

On Wed, Jun 29, 2022, 12:38 Daniel Radünz <ihmehlm...@gmx.de> wrote:

> Hello everybody,
>
> I'm wondering if there is a way in Wicket to generate unique html IDs and
> to then add them in other places in the html, without having to write any
> boiler plate code in each panel that I have.
>
> For example in the following panel I need the ID of the h1 tag to be put
> into the aria-labelledby attribute in the section tag.
> <wicket:panel>
> <section class="card" aria-labelledby="sectionheader">
> <div class="card-header"><h1 id="sectionheader">Lorem
> ipsum dolor sit amet</h1></div>
> <div class="card-content">Content ...</div>
> </section>
> </wicket:panel>
>
> Hardwiring it like in this example of course won't work if I use the same
> panel class multiple times within a page due to duplicate html IDs.
>
> While I know I could add WebMarkupContainers for the section and the h1 to
> my Java code and manually wire them together with an AttributeModifier in
> Wicket, I woud prefer to have some application wide code which recognizes
> this constellation in the html file and automatically generates and inserts
> the IDs.
>
> Maybe somebody can push me in the right direction, how I could accomplish
> this with Wicket, if it's possible at all.
>
> Kind regards,
> Daniel
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> For additional commands, e-mail: users-h...@wicket.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org

Reply via email to