Кнопка ввода HTML расположена в div

0

Я все еще получаю исключение RuntimeException при рендеринге своей страницы, и я не понимаю причину. Он сообщает, что закрытие </div> отсутствует, но оно уже существует. Что может быть решением для этого исключения?

Stracktrace:

Неожиданное исключение RuntimeException:

org.apache.wicket.markup.MarkupException: ожидаемый тег закрытия для ' <div class="device-nr" wicket:id="sampleHeader"> ' Возможная попытка встраивания компонентов (ов) ' <input wicket:id="saveButton" type="submit" value="Save"/> 'в теле этого компонента, который отбрасывает свое тело на org.apache.wicket.markup.MarkupStream.throwMarkupException(MarkupStream.java:526) на org.apache.wicket. Component.replaceComponentTagBody(Component.java:4045) в org.apache.wicket.markup.html.basic.Label.onComponentTagBody(Label.java:131)

и вот мой html-код:

<wicket:extend>
    <form class = sample-form wicket:id="sample_form">
        <div class="device-nr" wicket:id="sampleHeader">
            <input wicket:id="saveButton" type="submit" value="Save"/>
        </div>
        <wicket:child />
        <!-- display error here -->
        <div class= "feedback" wicket:id="feedback"></div>
        <div class="sample_details" wicket:id="sample_details"></div>
    </form>
</wicket:extend>

Вот мой Java-код:

this.form = new Form<T>("sample_form", compound);
    form.add(new Button("saveButton") {
        private static final long serialVersionUID = 5878291170139126213L;

        @Override
        public void onSubmit() {
            T s = form.getModelObject();
            logger.info(s.toString());

        }
    });
    form.add(new Label("sampleHeader", provideSampleHeader()));
    form.add(provideSamplePanel());
    form.add(new FeedbackPanel("feedback"));
    add(form);

Благодарю за помощь!

  • 0
    Хорошо, так ... где находится трассировка стека?
  • 0
    это довольно долго .. Я постараюсь вставить небольшую часть этого.
Показать ещё 1 комментарий
Теги:
input
wicket

1 ответ

2
Лучший ответ

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

Чтобы избавиться от этого, вам понадобится другой тег (скорее всего, калитка: контейнер, поскольку он только отображает его содержимое) для вашей метки.

Что-то вроде

<wicket:extend>
    <form class = sample-form wicket:id="sample_form">
        <div class="device-nr"> <wicket:container wicket:id="sampleHeader" />
            <input wicket:id="saveButton" type="submit" value="Save"/>
        </div>
        <wicket:child />
        <!-- display error here -->
        <div class= "feedback" wicket:id="feedback"></div>
        <div class="sample_details" wicket:id="sample_details"></div>
    </form>
</wicket:extend>

Я не могу проверить его прямо сейчас, так как у меня нет калитки, чтобы попробовать...

  • 0
    это сработало! Огромное спасибо!!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню