Java 从GXT中的模型类获取字符串时获取ClassCastException
我从模型中获取值时获取ClassCastException。请在下面查找异常详细信息:Java 从GXT中的模型类获取字符串时获取ClassCastException,java,gwt,gxt,Java,Gwt,Gxt,我从模型中获取值时获取ClassCastException。请在下面查找异常详细信息: Caused by: java.lang.ClassCastException: java.util.Date cannot be cast to java.lang.String at com.csscorp.presentation.spinneret.client.ams.AttendanceCaseCreationModel.getCheckinDate (AttendanceCaseCreation
Caused by: java.lang.ClassCastException: java.util.Date cannot be cast to java.lang.String
at com.csscorp.presentation.spinneret.client.ams.AttendanceCaseCreationModel.getCheckinDate (AttendanceCaseCreationModel.java:164)
at com.csscorp.presentation.spinneret.client.ams.AttendanceCaseCreationGridEditor$8.handleEvent (AttendanceCaseCreationGridEditor.java:916)
下面是我的代码:
ColumnConfig checkinDatecolumn = new ColumnConfig();
checkinDatecolumn.setId("checkinDate");
checkinDatecolumn.setHeader("Check In Date");
checkinDatecolumn.setWidth(85);
checkinDatecolumn.setMenuDisabled(true);
checkinDatecolumn.setSortable(false);
final DateField dateField1 = new DateField();
dateField1.getPropertyEditor().setFormat(DateTimeFormat.getFormat("dd/MMM/yyyy"));
final String tempDate=dateField1.getRawValue();
dateField1.getDatePicker().addListener(Events.Select, new Listener<DatePickerEvent>() {
@Override
public void handleEvent(DatePickerEvent dpe) {
if(ACCCheckBoxModel.getSelectedItem().getRosterDate()!=null){
DateTimeFormat format = DateTimeFormat.getFormat("dd/MMM/yyyy");
rosterdate=format.parse(ACCCheckBoxModel.getSelectedItem().getRosterDate());
nextdate.setTime(rosterdate.getTime()+(1000*60*60*24));
prevdate.setTime(rosterdate.getTime()-(1000*60*60*24));
}
int rowIndex = caseStoreModule.indexOf(ACCCheckBoxModel.getSelectedItem());
Window.alert("Row Index-->"+rowIndex);
if(ACCCheckBoxModel.getSelectedItem().getCheckinDate().toString() == null){//here I am getting ClassCastException
if (rosterdate.compareTo(dateField1.getValue())==0 || nextdate.compareTo(dateField1.getValue())==0){
Window.alert("this is a valid date-->");
}
else {
Window.alert("Enter a valid date-->");
dateField1.reset();
}
}
else{
//Here I need to Implement validation logic if the value from the model is not null
}
}
});
更新
调用toString方法后,ClassCastException不会出现
return get("checkinDate").toString();
但是当我检查null值时,它抛出了NullPointerException
if(ACCCheckBoxModel.getSelectedItem().getCheckinDate() == null)
例外情况详情如下:
原因:java.lang.NullPointerException:null位于com.csscorp.presentation.spinneret.client.ams.AttendanceCaseCaseCreationModel.GetCheckInDateAttendanceCaseCaseCaseCreationModel.java:167位于com.csscorp.presentation.spinneret.client.ams.AttendanceCaseCreationRidEditor$8.HandleEventStatementCaseCaseCreationRidEditor.java:920尝试以下操作:
public String getCheckinDate()
{
final Date date = (Date) get( "CheckinDate" );
return date == null ? null : date.toString();
}
从getCheckinDate.toString中删除toString。我通过下面的代码更改解决了这个问题
public String getCheckinDate() {
if(get("checkinDate")==null)
return null;
else
return get("checkinDate").toString();
}
现在,如果不为null,它将返回一个字符串。如果为null,它将返回null。请在AttendanceCaseCreationModel.java中发布第164行。请发布getcheckinDate的方法定义。这是BaseModelData类中的方法。当您获取checkinDate时,您应该调用toString,然后再调用它。更新了我的答案。让我试试这个。我认为它应该只返回字符串。我认为这行中的问题返回getcheckinDate;我正在从dateField获取日期,并尝试将其作为字符串返回。任何熟悉GXT的人,请建议。
public String getCheckinDate() {
if(get("checkinDate")==null)
return null;
else
return get("checkinDate").toString();
}