Styling Wicket datetimefield - PullRequest
       6

Styling Wicket datetimefield

0 голосов
/ 28 ноября 2011

Я использую компонент DateTimeField в Wicket, но я изо всех сил пытаюсь применить к нему любой стиль. Фрагмент HTML-кода таков:

<span id="creationDate" wicket:id="creationDate" />

и сопровождающая его Java:

add(new DateTimeField("creationDate", new PropertyModel<Date>(this, "creationDate")));

, который работает, но производит это (который я прибрал):

<span id="creationDate" wicket:id="creationDate">
<wicket:panel xmlns:wicket="http://wicket.apache.org">
<span style="white-space: nowrap;">
    <input type="text" wicket:id="date" size="12" value="28/11/11" name="creationDate:date" id="date1f"/>
    <span class="yui-skin-sam">&nbsp;
        <span style="display:none;position:absolute;z-index: 99999;" id="date1fDp"></span>
        <img style="cursor: pointer; border: none;" id="date1fIcon" src="wicket/resource/org.apache.wicket.extensions.yui.calendar.DatePicker/icon1-ver-1322148000242.gif" alt="" title=""/>
    </span>
    <input type="text" wicket:id="hours" size="2" value="14" name="creationDate:hours"/>
    <span wicket:id="hoursSeparator">&#160;:</span>
    <input type="text" wicket:id="minutes" size="2" value="17" name="creationDate:minutes"/>
</span>

Я надеюсь получить компоненты по отдельности, а затем добавить к ним style или class атрибуты. Как это можно сделать?

Ответы [ 2 ]

1 голос
/ 28 ноября 2011

Оказывается, вы можете просто переопределить HTML, в этом случае заменив DateTimeField.html в пакете org.apache.wicket.extensions.yui.calendar. Затем он заменяет HTML-код по умолчанию, и именно там я добавил детали класса.

1 голос
/ 28 ноября 2011

Вы можете использовать метод public Component add(final Behavior... behaviors), определенный в суперклассе Component.

. Вам нужно поведение AttributeAppender, с помощью которого вы можете добавить идентификатор / классы CSS или любой другой атрибут.Вы хотите добавить.

См. API: http://wicket.apache.org/apidocs/1.5/org/apache/wicket/behavior/AttributeAppender.html

ОБНОВЛЕНИЕ

Я только что быстро взглянул на исходный код DateTimeField.К сожалению, вы не можете получить доступ к компонентам по отдельности.

Я могу придумать два способа, как вы можете стилизовать компоненты:

  • Вы можете поместить целое DateTimeField в пользовательскийdiv и затем, например, доступ к текстовым полям с помощью каскадных селекторов CSS.(например, #myDiv input)
  • или вы создаете свой собственный класс DateTimeField с существующим исходным кодом и помещаете туда свой идентификатор / классы CSS.
...