On Fri, Jul 11, 2014 at 1:31 AM, Garret Wilson <gar...@globalmentor.com>
wrote:

> Everyone,
>
> Wicket was created in a world in which little was done at display time to
> manipulate the HTML DOM tree, so Wicket felt like it had free reign to muck
> around with the HTML given by the developer. But in today's world in which
> we use JavaScript libraries like jQuery to modify the DOM on a whim, and
> CSS libraries such as Yahoo! Pure to provide styling, Wicket's modification
> of the HTML I give it can wreak havoc with my application.
>
> 1. Let me give you two examples. The first is BookmarkablePageLink. I have
> a simple and semantically useful navigation:
>
> <nav>
>   <ul>
>    <li><a wicket:id="homePageLink" ...
>
> I throw in a couple of CSS classes from Yahoo! Pure CSS Library, and it
> turns into a beautiful menu with mouseover highlighting, selected items,
> etc. I use a BookmarkablePageLink to wrap each link. But some menu items
> are only available to users with certain permissions, so I want to disable
> some of them. Oops! When I call BookmarkablePageLink.setEnabled(false),
> the HTML changes! Suddenly my <a> tags are turned into ugly <span><em>
> tags, completely destroying the look of the menu because Yahoo! Pure CSS
> doesn't recognize <span><em> tags as menu items.
>
> Sure, I can call getMarkupSettings().setDefaultBeforeDisabledLink(...)
> and friends, but I shouldn't have to. This is a holdover from the days when
> stylistic changes were made by changing the HTML, not by applying CSS. I
> recommend that by default links should not change the HTML, but instead add
> or remove a particular HTML class value.
>
> 2. The second example is CheckBoxMultipleChoice. I have a nice set up
> checkboxes in the HTML:
>
>   <div wicket:id="widgets">
>     <label for="foo"><input id="foo" type="checkbox"/> Foo</label>
>     <label for="bar"><input id="bar" type="checkbox"/> Bar</label>
>   </div>
>

Created https://issues.apache.org/jira/browse/WICKET-5640 for p.2
Please comment in the ticket with suggestions what and how to improve.


>
> Without Wicket, those look nice; they are displayed horizontally, and the
> labels are beside the checkboxes:
>
>   X Foo    X Bar
>
> But if I use CheckBoxMultipleChoice, it completely screws up the HTML!
> Suddenly my HTML looks like this:
>
>   ...<input .../><label ...>foo</label><br/><input .../><label
> ...>bar</label><br/>
>
> Wicket has not only taken my <input> out of the <label>...</label>, it has
> added an ugly, non-semantic <br/> for styling. Why?? If I wanted to style
> my HTML with <br/> (like I did around the year 1997), then I would have put
> it in the original HTML myself! And by taking the <input> out of the
> <label>, they are no longer a unit, and because of my CSS styling the
> labels now appear under the checkboxes---not to mention that Wicket has
> forced my checkboxes to be vertical instead of horizontal via the <br/>.
> Yes, I realize I can call CheckBoxMultipleChoice.setSuffix(), but again,
> I shouldn't have to. It turns out that for the moment I will have to
> abandon CheckBoxMultipleChoice altogether and do everything manually.
>
> Yes, I know I can "remedy" much of this manually by adding lots of
> boilerplate/setup code to what comes out of the box by default, turning off
> auto-generation of "<em>" and "<br/>", etc. But that's one of the
> shortcomings of Wicket right now---to get it work like one would expect it
> to in the modern world of HTML5 and CSS3, one has to add lots of
> boilerplate code to change its defaults. Wicket was made to prevent
> boilerplate code.
>
> In summary, I'd like to encourage the developers going forward to tweak
> Wicket so that it doesn't change our HTML too much, it doesn't require us
> to "undo" the HTML that it forces on us, and plays much better in the
> modern world of HTML5, CSS3, and Ajax. And I'll be glad to help make that a
> reality!
>
> Best,
>
> Garret
>

Reply via email to