Apache Wicket - Объединение учебников

0

на самом деле я должен научиться калитке для практического курса, и у меня есть некоторые проблемы. Я попытался объединить два из калитки из библиотеки калитки, но это не удалось, и я не знаю, почему. В сообщении об ошибке говорится:

Последняя причина: Не удалось найти компонент с id 'form' в [BorderBodyContainer [Component id = navomaticBorder_body]] Ожидается: "navomaticBorder: navomaticBorder_body: form". Найдено с похожими именами: 'form'

Есть два примера, которые я хочу объединить: навигационная боковая панель, чтобы иметь некоторые связи между моими сайтами и простой валидатор паролей.

NavomaticBorder.java

public NavomaticBorder(final String id) {
    super(id);
    addToBorder(new BoxBorder("navigationBorder"));
    addToBorder(new BoxBorder("bodyBorder"));
}

NavomaticBorder.html

<html>
<head>
    <title>Wicket Examples - navomatic</title>
    <link rel="stylesheet" type="text/css" href="style.css"/>
</head>
<body>
<wicket:border> 
    <p>
    <table height = "100%">
        <tr>
            <td height = "100%" valign = "top">
                <div wicket:id = "navigationBorder">
                  <b>Navigation Links</b>
                  <p>
                    <wicket:link>
                      <a href = "Page1.html">Seite1</a><br/>
                      <a href = "Page2.html">Seite2</a><br/>
                      <a href = "Page3.html">Seite3</a>
                    </wicket:link>
                  </p>
                </div>
            </td>
            <td valign = "top">
                <span wicket:id = "bodyBorder">
                    <wicket:body/>
                </span>
            </td>
        </tr>
    </table>
    </p>
</wicket:border>
</body>
</html>

page1.html

<html>
<head>
<title>Wicket Examples - navomatic</title>
<link rel="stylesheet" type="text/css" href="style.css"/>
</head>
<body>
<span wicket:id = "navomaticBorder">
    <h1>Registration 1</h1>
    <form wicket:id="form">
    <p><label>Username</label>:<input wicket:id="username" 
    type="text" size="20"></p>
    <p><label>Password</label>:<input wicket:id="password1" 
    type="password" size="20"></p>
    <p><label>Confirm Password</label>:<input wicket:id="password2" 
    type="password" size="20"></p>
    <input type="submit" value="Register">
</form>
<div wicket:id="feedback"></div>
</span>
</body>
</html>

Page1.java

public class Page1 extends WebPage {
/**
 * 
 */
private static final long serialVersionUID = 8070623982828503750L;
public Page1() {
    add(new NavomaticBorder("navomaticBorder"));
    add(new FeedbackPanel("feedback"));
    final TextField<?> username = new TextField<String>("username",
            Model.of(""));
    username.setRequired(true);
    FormComponent<String> password1 = new PasswordTextField("password1",
            Model.of(""));
    password1.setLabel(Model.of("Password"));
    password1.add(StringValidator.minimumLength(8));
    password1.add(new PasswordPolicyValidator());
    FormComponent<String> password2 = new PasswordTextField("password2",
            Model.of(""));
    Form<?> form = new Form<Void>("form") {
        private static final long serialVersionUID = -8653853765358238769L;

        @Override
        protected void onSubmit() {
            info("Form submitted");
        }
    };
    form.add(new EqualPasswordInputValidator(password1, password2));
    add(form);
    form.add(username);
    form.add(password1);
    form.add(password2);

}
}

Я думаю, что это части кода, которые могут вызвать ошибку, когда я позволяю всем им работать самостоятельно, не проблема, просто когда я совмещаю это в последнем html файле, выставляя ошибку. У меня нет реального опыта работы с Html, возможно, это причина, но я надеюсь, что его достаточно данных, чтобы помочь мне :)

Richie

  • 0
    Хм, может быть, я должен добавить Page1.java, где форма объявлена. Я думал, что могу использовать форму wicket: id = из этого файла page1.java, и он не должен быть в классе navomaticborder.java ...?!
  • 0
    я думал, что NavomaticBorder.html будет общим контейнером для моего сайта, я не хочу, чтобы на каждой веб-странице была форма ...
Показать ещё 1 комментарий
Теги:
wicket

1 ответ

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

Он ищет вашу форму в элементе navomaticBorder. Поэтому вы должны добавить форму в navomaticBorder. Попробуйте изменить свой код на это:

public class Page1 extends WebPage {
/**
 * 
 */
private static final long serialVersionUID = 8070623982828503750L;
public Page1() {
    NavomaticBorder nav = new NavomaticBorder("navomaticBorder");
    add(nav);
    add(new FeedbackPanel("feedback"));
    final TextField<?> username = new TextField<String>("username",
            Model.of(""));
    username.setRequired(true);
    FormComponent<String> password1 = new PasswordTextField("password1",
            Model.of(""));
    password1.setLabel(Model.of("Password"));
    password1.add(StringValidator.minimumLength(8));
    password1.add(new PasswordPolicyValidator());
    FormComponent<String> password2 = new PasswordTextField("password2",
            Model.of(""));
    Form<?> form = new Form<Void>("form") {
        private static final long serialVersionUID = -8653853765358238769L;

        @Override
        protected void onSubmit() {
            info("Form submitted");
        }
    };
    form.add(new EqualPasswordInputValidator(password1, password2));
    nav.add(form);
    form.add(username);
    form.add(password1);
    form.add(password2);

}
}
  • 0
    Спасибо, это работает :)
  • 0
    хм, я пытался использовать это также на моих других Page2.java и Page3.java, но приходит то же исключение. Я просто хотел реализовать панель обратной связи, и файл выглядит так: NavomaticBorder nav = new NavomaticBorder ("navomaticBorder"); FeedbackPanel feedbacker = новый FeedbackPanel («обратная связь»); добавить (NAV); добавить (feedbacker); nav.add (feedbacker); но это не работает ... я не вижу никакой разницы между этим и тем, что вы исправили меня ... на странице 1, которая работает, может быть, я не могу использовать это снова?
Показать ещё 1 комментарий

Ещё вопросы

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