2016-05-16 17 views
0

So versuche ich zu ersetzen, was ein Textfeld war, um Zeit von meinen Benutzern mit einem TimeField (des Typs, der im Titel erwähnt wird) zu bekommen.org.apache.wicket.extensions.yui.calendar.timefield wie man wicket

Ich laufe auf alle Arten von Problemen. Nämlich, dass das TimeField absolut Zeitfeld-Typ sein muss und nicht einfach in eine java.util.Date oder gar eine Zeichenkette umgewandelt werden kann ??? Sehr frustrierend. Jeden, Fall, ich bekomme immer wieder

Caused by: java.lang.ClassCastException: com.usaa.infrastructure.calculator.admin.panels.SloDefinitionEditPanel$21 incompatible with java.util.Date 
at org.apache.wicket.extensions.yui.calendar.DateTimeField.onBeforeRender(DateTimeField.java:429) 

Also im Grunde das ist, was ich in meiner Platte haben:

private TimeField       dueTimestamp   = null; 

ich die Standartd Timefield-Klasse als auch eingerichtet ...

randoTimestamp = new TimeField("randoTimestamp", new PropertyModel<Date>(this, "randoTimestamp")) 
    { 
     private static final long serialVersionUID = 1L; 

     @Override 
     public boolean isEnabled() 
     { 
      return readOnly ? false : true; 
     } 

     @Override 
     protected boolean use12HourFormat(){ 
      return false; 
     } 


    }; 

Gibt es eine Überschreibung oder etwas, das ich verwenden kann, um dieses java.util.date Problem zu verringern? Fast vergessen zu erwähnen, habe ich mein DAO-Objekt als java.util.Date-Objekt festgelegt. Soll ich es mit etwas anderem gleichsetzen? String, ect ???

public class wackyVO implements Serializable { 

private static final long serialVersionUID = -2592713376857273204L; 

... 
private Date randoTimeStamp; //<-- This variable 
... 
} 
+0

Ist das nicht Ihre Property einfach auf das falsche Feld zeigt? Sie haben "directimestamp" als Feldnamen angegeben, um das Datum abzurufen. Dies ist jedoch Ihr TimeField, daher die ClassCastException. Wahrscheinlich willst du es auf "randoTimeStamp" zeigen: 'new PropertyModel (this," randoTimeStamp "))' – Tekki

+0

Gutes Auge, aber das war nicht das Problem, ich denke, der Wicket-Compiler hätte das entdeckt. Das war eine schlechte Bearbeitung meiner Arbeit. – SoftwareSavant

Antwort

0

Das Problem ist, dass Sie Ihren Panel als Objekt im Modell setzen Sie auf die Timefield vorbei sind.

Verwenden Sie dies, wenn Ihr Standard-ModelObject festgelegt ist.

randoTimestamp = new TimeField("randoTimestamp", new PropertyModel<Date>(this.getDefaultModelObject(), "randoTimestamp")) 

Ansonsten verwenden

randoTimestamp = new TimeField("randoTimestamp", new PropertyModel<Date>(this.getYourModelObject(), "randoTimestamp"))