Oh, if this helps, what I want could be achieved with this: <span wicket:id="foobar"> <span wicket:id="text">TEXT</span> <span wicket:id="star">*</span> </span>
and then doing something like: foobar = new MarkupContainer("foobar"); foobar.add(new Label("text", ...)) foobar.add(new WebMarkupContainer("removeMe") { public boolean isVisible() { return sometimesFalse(); } }); add(foobar); but I find the template html to be less readable in this case and was hoping to not have to do it this way. Lowell On 5/31/07, Lowell Kirsh <[EMAIL PROTECTED]> wrote: > Basically what I want to do is from this markup: > > <span wicket:id="foo>TEXT<span wicket:id="star">*<span></span> > > I'd like to replace 'TEXT' with some text from my java code, and would > like to set the visibility of the 'star' span from within my code. > > Replacing TEXT seems similar to what a Label does, but a Label won't > support the embedded 'star' span. So I tried to mimic Label my > creating my own component (I tried WebMarkupContainer) and mimic the > behavior of Label, but also allow for the embedded component. So I > tried to override the onComponentTagBody() method with one that calls > replaceComponentTagBody() but that didn't work because that removed > the 'star' span. > > So what I'd really like to do would be to create my custom component > and somehow tell it to replace the text of its body (ie. the 'TEXT') > but to do so without removing child components. > > Make sense? > > On 5/31/07, Lowell Kirsh <[EMAIL PROTECTED]> wrote: > > And which Panel method do I need to call to set its text without > > removing the star Component? > > > > On 5/31/07, Eelco Hillenius <[EMAIL PROTECTED]> wrote: > > > LabelWithStar should extend Panel. > > > > > > Eelco > > > > > > On 5/31/07, Lowell Kirsh <[EMAIL PROTECTED]> wrote: > > > > But I get the following error: > > > > > > > > ...WicketMessage: Expected close tag for '<span wicket:id="foobar">' > > > > Possible attempt to embed component(s) '<span wicket:id="star">' in > > > > the body of this component which discards its body > > > > > > > > Doesn't that mean my approach is flawed? > > > > > > > > On 5/31/07, Eelco Hillenius <[EMAIL PROTECTED]> wrote: > > > > > Then you should be able to use that label idea and embed it in your > > > > > component. > > > > > > > > > > Eelco > > > > > > > > > > On 5/31/07, Lowell Kirsh <[EMAIL PROTECTED]> wrote: > > > > > > Once again I left out a detail - the reason I have the span is that > > > > > > I > > > > > > want to apply a CSS class to the star. Also, I like to have the star > > > > > > as a child of the other component, because that way I don't have to > > > > > > assign unique names to each star, and also, I can package the text > > > > > > and > > > > > > the star as one object type (or just use a single method to deal > > > > > > with > > > > > > both at once) so that I don't have duplicated code. > > > > > > > > > > > > On 5/31/07, Eelco Hillenius <[EMAIL PROTECTED]> wrote: > > > > > > > On 5/31/07, Lowell Kirsh <[EMAIL PROTECTED]> wrote: > > > > > > > > My use case is actually turning out slightly more complex than I > > > > > > > > posted. What I actually have is: > > > > > > > > > > > > > > > > <span wicket:id="foo">TEXT<span wicket:id="star">*</span><span> > > > > > > > > > > > > > > > > and I'd like to sometimes remove the star. So my java (which > > > > > > > > doesn't > > > > > > > > work) looks like: > > > > > > > > > > > > > > > > private static class LabelWithStar extends WebMarkupContainer > > > > > > > > { > > > > > > > > public LabelWithStar(String id, String model, final > > > > > > > > boolean > > > > > > > > starIsVisible) > > > > > > > > { > > > > > > > > super(id, new Model(model)); > > > > > > > > this.add(new WebMarkupContainer("star") { > > > > > > > > public boolean isVisible() > > > > > > > > { > > > > > > > > return starIsVisible; > > > > > > > > } > > > > > > > > }); > > > > > > > > } > > > > > > > > > > > > > > > > protected void onComponentTagBody(MarkupStream > > > > > > > > markupStream, > > > > > > > > ComponentTag openTag) > > > > > > > > { > > > > > > > > replaceComponentTagBody(markupStream, openTag, > > > > > > > > getModelObjectAsString()); > > > > > > > > } > > > > > > > > } > > > > > > > > > > > > > > > > This doesn't work because the call to replaceComponentTagBody() > > > > > > > > removes the span with the star. How should I be doing this > > > > > > > > instead? > > > > > > > > > > > > > > You mean you need to have the span? Why is that? > > > > > > > > > > > > > > Alternatively, you can do something like > > > > > > > > > > > > > > add(new Label("star", new AbstractReadOnlyModel() { > > > > > > > > > > > > > > @Override > > > > > > > public Object getObject() { > > > > > > > return isStarVisible() ? "*" : ""; > > > > > > > } > > > > > > > })); > > > > > > > } > > > > > > > > > > > > > > > > > > > > > Eelco > > > > > > > > > > > > > > ------------------------------------------------------------------------- > > > > > > > This SF.net email is sponsored by DB2 Express > > > > > > > Download DB2 Express C - the FREE version of DB2 express and take > > > > > > > control of your XML. No limits. Just data. Click to get it now. > > > > > > > http://sourceforge.net/powerbar/db2/ > > > > > > > _______________________________________________ > > > > > > > Wicket-user mailing list > > > > > > > Wicket-user@lists.sourceforge.net > > > > > > > https://lists.sourceforge.net/lists/listinfo/wicket-user > > > > > > > > > > > > > > > > > > > ------------------------------------------------------------------------- > > > > > > This SF.net email is sponsored by DB2 Express > > > > > > Download DB2 Express C - the FREE version of DB2 express and take > > > > > > control of your XML. No limits. Just data. Click to get it now. > > > > > > http://sourceforge.net/powerbar/db2/ > > > > > > _______________________________________________ > > > > > > Wicket-user mailing list > > > > > > Wicket-user@lists.sourceforge.net > > > > > > https://lists.sourceforge.net/lists/listinfo/wicket-user > > > > > > > > > > > > > > > > ------------------------------------------------------------------------- > > > > > This SF.net email is sponsored by DB2 Express > > > > > Download DB2 Express C - the FREE version of DB2 express and take > > > > > control of your XML. No limits. Just data. Click to get it now. > > > > > http://sourceforge.net/powerbar/db2/ > > > > > _______________________________________________ > > > > > Wicket-user mailing list > > > > > Wicket-user@lists.sourceforge.net > > > > > https://lists.sourceforge.net/lists/listinfo/wicket-user > > > > > > > > > > > > > ------------------------------------------------------------------------- > > > > This SF.net email is sponsored by DB2 Express > > > > Download DB2 Express C - the FREE version of DB2 express and take > > > > control of your XML. No limits. Just data. Click to get it now. > > > > http://sourceforge.net/powerbar/db2/ > > > > _______________________________________________ > > > > Wicket-user mailing list > > > > Wicket-user@lists.sourceforge.net > > > > https://lists.sourceforge.net/lists/listinfo/wicket-user > > > > > > > > > > ------------------------------------------------------------------------- > > > This SF.net email is sponsored by DB2 Express > > > Download DB2 Express C - the FREE version of DB2 express and take > > > control of your XML. No limits. Just data. Click to get it now. > > > http://sourceforge.net/powerbar/db2/ > > > _______________________________________________ > > > Wicket-user mailing list > > > Wicket-user@lists.sourceforge.net > > > https://lists.sourceforge.net/lists/listinfo/wicket-user > > > > > > ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ Wicket-user mailing list Wicket-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wicket-user