Ошибка ModalWindow в калитке - PullRequest
       0

Ошибка ModalWindow в калитке

2 голосов
/ 15 декабря 2010

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

WicketMessage: неверный идентификатор содержимого модального окна.Идентификатор компонента: myPanel;ID контента: контент:

в моем html AddStudent:

<span wicket:id="InformationDialog"/>
<span wicket:id="myPanel"/>

Это первые вещи после моего тега открытия

в AddStudent.java (в конструкторе):

panel=new InformationPanel("myPanel");
message=new ModalWindow("InformationDialog");
message.setContent(panel);
message.setCssClassName(ModalWindow.CSS_CLASS_BLUE);
message.setTitle("Important Information");

, где InformationPanel расширяет Panel:

<html>
<wicket:panel>
<table>
<tr>
<td><span wicket:id="message"/></td>
</tr>
<tr>
<td><input type ="button" value ="OK" wicket:id="ok"/></td>
</tr>
</table>
</wicket:panel>
<html>

Очевидно, у меня есть соответствующий класс Java, он может быть неактуален, но вот он:

package myapp.project;

import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Button;
import org.apache.wicket.markup.html.panel.Panel;

public class InformationPanel extends Panel {
    private Button ok;
    private Label messageLabel;
    public InformationPanel(String id){
        super(id);
        messageLabel=new Label("message","");
        ok=new Button("ok"){
            public void onSubmit(){
                AddStudent student = new AddStudent();
                setResponsePage(student);
            }
        };
        add(ok);
        add(messageLabel);

    }
    public void setSuccessful(){
        messageLabel.setDefaultModelObject("You have successfully added the student");
    }
    public void setUnSuccessful(){
        messageLabel.setDefaultModelObject("A student with that username already exists!");
    }

}

Нет понятия о проблеме.Заранее спасибо

1 Ответ

7 голосов
/ 16 декабря 2010

В вашем конструкторе AddStudent.java у вас есть

panel=new InformationPanel("myPanel");
message=new ModalWindow("InformationDialog");
message.setContent(panel);

Wicket ModalWindow необходимо, чтобы его содержимое имело определенный идентификатор, который вам не подходит.

Попробуйте изменить это на

message=new ModalWindow("InformationDialog");
panel=new InformationPanel(message.getContentId());
message.setContent(panel);

message.getContentId() должен выровнять идентификаторы.

...