2010-05-31 162 views
0

因此,我使用Tapestry並試圖將beaneditform的日期存儲到一個簡單的Access數據庫中。它不會工作,我得到空指針異常,我不明白爲什麼。Tapestry/JDBC - 存儲日期

String onSuccess() 
{ 
    System.out.println("in on success!"); 
    String nextPage = null; 
    try { 
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
    connection = DriverManager.getConnection("jdbc:odbc:FYP_Users"); 
    DateFormat df = new SimpleDateFormat("dd/MM/yyyy"); 
    Date ed = occasion.getEventDate();    
    String reportDate = df.format(ed); 
    statement.executeUpdate("INSERT INTO Events (UserName, EventName, EventDate, EventTime, EventDetails, People, Rating) " + "VALUES ('" + login.getUserName() + "', '" + occasion.getEventName()+ "', '" + reportDate + "', '" + occasion.getEventTime() + "', '" + occasion.getEventDetails() + "', '" + occasion.getPeople() + "', '"+ "1" +"')"); 
    connection.close(); 

    occasion = new Occasion(); 
    //occasion.setUserName(occasion.getUserName()); 
    occasion.setEventName(occasion.getEventName()); 
    occasion.setEventDate(occasion.getEventDate()); 
    occasion.setEventTime(occasion.getEventTime()); 
    occasion.setEventDetails(occasion.getEventDetails()); 
    occasion.setPeople(occasion.getPeople()); 
    //occasion.setRating(occasion.getRating()); 
    nextPage = "UserIndex"; 
    } 
    catch (SQLException e) {e.printStackTrace();} 
    catch (ClassNotFoundException e) {e.printStackTrace();} 
    return nextPage; 
} 

堆棧跟蹤

java.util.Calendar.setTime(Unknown Source) 
java.text.SimpleDateFormat.format(Unknown Source) 
java.text.SimpleDateFormat.format(Unknown Source) 
java.text.DateFormat.format(Unknown Source) 
myappj.pages.CreateOccasion.onSuccess(CreateOccasion.java:61) 
myappj.pages.CreateOccasion.dispatchComponentEvent(CreateOccasion.java) 
org.apache.tapestry5.internal.structure.ComponentPageElementImpl.dispatchEvent(ComponentPageElementImpl.java:902) 
org.apache.tapestry5.internal.structure.ComponentPageElementImpl.triggerContextEvent(ComponentPageElementImpl.java:1081) 
org.apache.tapestry5.internal.structure.InternalComponentResourcesImpl.triggerContextEvent(InternalComponentResourcesImpl.java:263) 
org.apache.tapestry5.corelib.components.Form._$advised$onAction(Form.java:398) 
org.apache.tapestry5.corelib.components.Form$onAction$invocation_128ef468876.invokeAdvisedMethod(Form$onAction$invocation_128ef468876.java) 
org.apache.tapestry5.internal.services.AbstractComponentMethodInvocation.proceed(AbstractComponentMethodInvocation.java:71) 
org.apache.tapestry5.ioc.internal.services.LoggingAdvice.advise(LoggingAdvice.java:37) 
org.apache.tapestry5.internal.transform.LogWorker$1.advise(LogWorker.java:54) 
org.apache.tapestry5.internal.services.AbstractComponentMethodInvocation.proceed(AbstractComponentMethodInvocation.java:80) 
org.apache.tapestry5.corelib.components.Form.onAction(Form.java) 
org.apache.tapestry5.corelib.components.Form.dispatchComponentEvent(Form.java) 
org.apache.tapestry5.internal.structure.ComponentPageElementImpl.dispatchEvent(ComponentPageElementImpl.java:910) 
org.apache.tapestry5.internal.structure.ComponentPageElementImpl.triggerContextEvent(ComponentPageElementImpl.java:1081) 
org.apache.tapestry5.internal.services.ComponentEventRequestHandlerImpl.handle(ComponentEventRequestHandlerImpl.java:75) 
org.apache.tapestry5.internal.services.ImmediateActionRenderResponseFilter.handle(ImmediateActionRenderResponseFilter.java:42) 
$ComponentEventRequestHandler_128ef45bf4a.handle($ComponentEventRequestHandler_128ef45bf4a.java) 
org.apache.tapestry5.internal.services.AjaxFilter.handle(AjaxFilter.java:42) 
$ComponentEventRequestHandler_128ef45bf4a.handle($ComponentEventRequestHandler_128ef45bf4a.java) 
org.apache.tapestry5.services.TapestryModule$36.handle(TapestryModule.java:2164) 
$ComponentEventRequestHandler_128ef45bf4a.handle($ComponentEventRequestHandler_128ef45bf4a.java) 
$ComponentEventRequestHandler_128ef45bea5.handle($ComponentEventRequestHandler_128ef45bea5.java) 
org.apache.tapestry5.internal.services.ComponentRequestHandlerTerminator.handleComponentEvent(ComponentRequestHandlerTerminator.java:43) 
$ComponentRequestHandler_128ef45be99.handleComponentEvent($ComponentRequestHandler_128ef45be99.java) 
org.apache.tapestry5.internal.services.ComponentEventDispatcher.dispatch(ComponentEventDispatcher.java:46) 
$Dispatcher_128ef45be9b.dispatch($Dispatcher_128ef45be9b.java) 
$Dispatcher_128ef45be92.dispatch($Dispatcher_128ef45be92.java) 
org.apache.tapestry5.services.TapestryModule$RequestHandlerTerminator.service(TapestryModule.java:245) 
org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:26) 
$RequestHandler_128ef45be93.service($RequestHandler_128ef45be93.java) 
org.apache.tapestry5.services.TapestryModule$4.service(TapestryModule.java:778) 
$RequestHandler_128ef45be93.service($RequestHandler_128ef45be93.java) 
org.apache.tapestry5.services.TapestryModule$3.service(TapestryModule.java:767) 
$RequestHandler_128ef45be93.service($RequestHandler_128ef45be93.java) 
org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:85) 
$RequestHandler_128ef45be93.service($RequestHandler_128ef45be93.java) 
myappj.services.AppModule$1.service(AppModule.java:90) 
$RequestFilter_128ef45be8e.service($RequestFilter_128ef45be8e.java) 
$RequestHandler_128ef45be93.service($RequestHandler_128ef45be93.java) 
org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:90) 
org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:81) 
org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:85) 
org.apache.tapestry5.internal.services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:103) 
$RequestHandler_128ef45be93.service($RequestHandler_128ef45be93.java) 
$RequestHandler_128ef45be88.service($RequestHandler_128ef45be88.java) 
org.apache.tapestry5.services.TapestryModule$HttpServletRequestHandlerTerminator.service(TapestryModule.java:197) 
org.apache.tapestry5.internal.gzip.GZipFilter.service(GZipFilter.java:53) 
$HttpServletRequestHandler_128ef45be8a.service($HttpServletRequestHandler_128ef45be8a.java) 
org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62) 
$HttpServletRequestFilter_128ef45be87.service($HttpServletRequestFilter_128ef45be87.java) 
$HttpServletRequestHandler_128ef45be8a.service($HttpServletRequestHandler_128ef45be8a.java) 
org.apache.tapestry5.services.TapestryModule$2.service(TapestryModule.java:726) 
$HttpServletRequestHandler_128ef45be8a.service($HttpServletRequestHandler_128ef45be8a.java) 
$HttpServletRequestHandler_128ef45be85.service($HttpServletRequestHandler_128ef45be85.java) 
org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:127) 
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084) 
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360) 
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) 
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:722) 
org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:404) 
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139) 
org.mortbay.jetty.Server.handle(Server.java:324) 
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505) 
org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:842) 
org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:648) 
org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) 
org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380) 
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395) 
org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:450) 
+0

是的我打算編輯它,但暫時我需要修復日期問題。堆棧跟蹤已添加。 – Ben 2010-05-31 17:24:39

回答

1

看起來ed爲空。

您可以使用調試器來驗證此操作,也可以在獲取日期以測試空值後添加一些行。

Date ed = occasion.getEventDate(); 
if (ed==null) throw new NullPointerException("ed is null"); 

如果日期爲空,那麼你將需要添加一些驗證這樣Tapestry不允許空日期。請參閱Tapestry 5.1網站上的Form Input Validation。例如,在您的Occasion bean中,將註釋添加到eventDate屬性。

0

是您正確的,編爲空,但我 不能明白爲什麼,因爲我對場合豆的 驗證和它 一直有要求 註解。

明白了。這是與我的格式在beaneditform和tml文件中。感謝您的幫助,但沒有意識到ed == null我不會找到它。