2010-12-15 6 views
2

Ich bin neu in Wicket, und ich erhalte er Fehler folgende wenn ich versuche, meine Anwendung auszuführen:Wicket ModalWindow Fehler

WicketMessage: Modal Fensterinhalt-ID ist falsch. Komponenten-ID: meinPanel; Content-ID: Inhalt:

in meinem AddStudent html:

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

Dies sind die ersten Dinge nach meinem Starttag

in AddStudent.java (im Konstruktor):

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

, in dem sich InformationPanel erstreckt. 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> 
Offensichtlich 10

, ich habe eine entsprechende Java-Klasse-es nicht relevant sein könnte, aber hier ist es:

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!"); 
    } 

} 

Keine Ahnung des Problems. Vielen Dank im Voraus

Antwort

7

In Ihrem AddStudent.java Konstruktor haben Sie

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

Wicket ModalWindow dessen Inhalt eine bestimmte ID haben muss, die man nicht übereinstimmt.

versuchen, dies zu

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

Die message.getContentId() sollte Wechsel machen die Ide auszurichten.

+0

Vielen Dank, aber jetzt heißt es: WicketMessage: Es konnte keine Komponente mit der ID 'InformationDialog' in [MarkupContainer [Komponenten-ID = _extend8]] gefunden werden. Dies bedeutet, dass Sie in Ihrem Markup "wicket: id = InformationDialog" deklariert haben, dass Sie die Komponente jedoch entweder überhaupt nicht zu Ihrer Seite hinzugefügt haben oder dass die Hierarchie nicht übereinstimmt. [markup = Datei:/C: /workspace/MyApp/context/WEB-INF/classes/myapp/project/AddStudent.html –

+0

Das ist ein Unterschied zwischen Ihrem HTML-Markup und Ihrem Java. Fehlt Ihrer AddStudent-Klasse ein 'add (message)'? –

+0

Das ist richtig - sehr bald, nachdem ich gepostet habe - dachte ich habe geschrieben, dass ich es sortiert habe, aber offensichtlich nicht. Ich danke dir sehr! –