2011-11-16 1 views
2

SQL 서버에 제출 된 데이터를 저장하기 위해 간단한 폼과 관리 빈을 작성했습니다. sqljdbc를 다운로드하여 설치했습니다. 다음은 발생JSF 주어진 객체를 날짜로 포맷 할 수 없습니다.

이 ... 정말 무슨 일이 일어나고 있는지
javax.servlet.ServletException: Cannot format given Object as a Date 

확실

<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:p="http://primefaces.prime.com.tr/ui" 
    xmlns:f="http://java.sun.com/jsf/core"> 
<h:head> 
    <title>Reservation Request</title> 
</h:head> 
<body> 
<h:form> 
    <h2>Event Details:</h2> 
    <table cellspacing="10"> 
     <tr> 
      <td> 
       Event Title: 
      </td> 
      <td> 
     <p:inputText id="eventTitle" value="#{formData.eventTitle}"/> 
      </td> 
     </tr> 
    </table> 
    <table> 
     <tr> 
      <td> 
       <p:tab title="startDate"> 
        <h:panelGrid columns="2" cellpadding="10"> 
         <label>Start Date</label> 
         <p:calendar value="#{formData.startDate}}" required="true" /> 
         <h:message for="startDate" /> 
        </h:panelGrid> 
        </p:tab> 
      </td> 
      <td> 
       <p:tab title="endDate"> 
        <h:panelGrid columns="2" cellpadding="10"> 
         <label>End Date</label> 
         <p:calendar value="#{formData.endDate}" required="true" /> 
         <h:message for="endDate" /> 
        </h:panelGrid> 
        </p:tab> 
      </td> 
     </tr> 
     <tr> 
      <td> 
       Request Type/Purpose: 
      </td> 
     </tr> 
     <tr> 
      <td> 

       <h:selectOneMenu id="purposeOption" 
       required="true" 
       value="#{formData.requestType}"> 
       <f:selectItem 
        itemValue="#{formData.projectOption}" 
        itemLabel="Project"/> 
       <f:selectItem 
        itemValue="#{formData.trainingOption}" 
        itemLabel="Training"/> 
       </h:selectOneMenu> 
      </td> 
     </tr> 
    </table> 
    <table cellspacing="10"> 
     <tr> 
      <td> 
       Workstations Required: 
      </td> 
      <td> 
     <p:inputText value="#{formData.terminalsRequired}" id="terminals"/> 
      </td> 
     </tr> 
    </table> 
    <br></br> 
    <h2>Requester Information:</h2> 
    <table cellspacing="10"> 
     <tr> 
      <td> 
       Last Name: 
      </td> 
      <td> 
       <p:inputText value="#{formData.lastName}" id="lastName"/> 
      </td> 
      <td> 
       First Name: 
      </td> 
      <td> 
       <p:inputText value="#{formData.firstName}" id="firstName"/> 
      </td> 
      <td> 
       M.I: 
      </td> 
      <td> 
      <p:inputText value="#{formData.middleInitials}" id="middleInitials"/> 
      </td> 
     </tr> 
     <tr> 
      <td> 
       Badge: 
      </td> 
      <td> 
     <p:inputText value="#{formData.badgeNo}" id="badgeNo"/> 
      </td> 
      <td> 
       Network ID: 
      </td> 
      <td> 
      <p:inputText value="#{formData.networkID}" id="networkID"/> 
      </td> 
      <td> 
       Telephone: 
      </td> 
      <td> 
      <p:inputText value="#{formData.telephoneNo}" id="telephoneNo"/> 
      </td> 
     </tr> 
     <tr> 
      <td> 
       Org Code: 
      </td> 
      <td> 
     <p:inputText value="#{formData.orgCode}" id="orgCode"/> 
      </td> 
      <td> 
       Org Name: 
      </td> 
      <td> 
       <p:inputText value="#{formData.orgName}" id="orgname"/> 
      </td> 
     </tr> 
    </table> 
    <br></br> 
    <table> 
     <tr> 
      <td> 
       <b>Justification:</b> 
      </td> 
     </tr> 
     <tr> 
      <td> 
     <p:inputTextarea value="#{formData.justification}" id="justification" cols="80" rows="10" /> 
      </td> 
     </tr> 
     <tr> 
      <td> 
     <h:commandButton value="Submit Data!" action="#{formData.storeTheData()}"/> 
      </td> 
     </tr> 
    </table> 
</h:form> 
</body> 
</html> 

과 백킹 빈은 다음과 같습니다
package core.smd.classes; 

import javax.faces.bean.ManagedBean; 
import javax.faces.bean.SessionScoped; 
import java.util.Date; 
import java.sql.*; 
/** 
* 
* @author 
*/ 
@ManagedBean 
@SessionScoped 
public class FormData { 
//global variables 
String eventTitle; 
Date startDate; 
Date endDate; 
String requestType; 
int terminalsRequired; 
String lastName; 
String firstName; 
String middleInitials; 
int badgeNo; 
String networkID; 
String telephoneNo; 
String orgCode; 
String orgName; 
String trainingOption; 
String projectOption; 
String justification; 
/*End of variables declaration*/ 

/** Creates a new instance of FormData */ 
public FormData() { 
} 

public int getBadgeNo() { 
    return badgeNo; 
} 

public String getJustification() { 
    return justification; 
} 

public void setJustification(String justification) { 
    this.justification = justification; 
} 


public void setBadgeNo(int badgeNo) { 
    this.badgeNo = badgeNo; 
} 

public String getProjectOption() { 
    return projectOption; 
} 

public void setProjectOption(String projectOption) { 
    this.projectOption = projectOption; 
} 

public String getTrainingOption() { 
    return trainingOption; 
} 

public void setTrainingOption(String trainingOption) { 
    this.trainingOption = trainingOption; 
} 



public Date getEndDate() { 
    return endDate; 
} 

public void setEndDate(Date endDate) { 
    this.endDate = endDate; 
} 

public String getEventTitle() { 
    return eventTitle; 
} 

public void setEventTitle(String eventTitle) { 
    this.eventTitle = eventTitle; 
} 

public String getFirstName() { 
    return firstName; 
} 

public void setFirstName(String firstName) { 
    this.firstName = firstName; 
} 

public String getLastName() { 
    return lastName; 
} 

public void setLastName(String lastName) { 
    this.lastName = lastName; 
} 

public String getMiddleInitials() { 
    return middleInitials; 
} 

public void setMiddleInitials(String middleInitials) { 
    this.middleInitials = middleInitials; 
} 

public String getNetworkID() { 
    return networkID; 
} 

public void setNetworkID(String networkID) { 
    this.networkID = networkID; 
} 

public String getOrgCode() { 
    return orgCode; 
} 

public void setOrgCode(String orgCode) { 
    this.orgCode = orgCode; 
} 

public String getOrgName() { 
    return orgName; 
} 

public void setOrgName(String orgName) { 
    this.orgName = orgName; 
} 

public String getRequestType() { 
    return requestType; 
} 

public void setRequestType(String requestType) { 
    this.requestType = requestType; 
} 

public Date getStartDate() { 
    return startDate; 
} 

public void setStartDate(Date startDate) { 
    this.startDate = startDate; 
} 

public String getTelephoneNo() { 
    return telephoneNo; 
} 

public void setTelephoneNo(String telephoneNo) { 
    this.telephoneNo = telephoneNo; 
} 

public int getTerminalsRequired() { 
    return terminalsRequired; 
} 

public void setTerminalsRequired(int terminalsRequired) { 
    this.terminalsRequired = terminalsRequired; 
} 

public void storeTheData(){ 
    //prepared statenebts 
    PreparedStatement preStmt = null; 


    try { 
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
    String connectionUrl = "jdbc:sqlserver://localhost:1433;" + 
     "xxxx;user=sa;password=xxxxx;"; 
    Connection con = DriverManager.getConnection(connectionUrl); 
    String sqlQuery = "INSERT INTO Pending_Requests(Request_No, Request_Details, Network_ID, Request_Status) VALUES(?, ?, ?, ?)"; 
    preStmt = con.prepareStatement(sqlQuery); 
    preStmt.setString(1, telephoneNo); 
    preStmt.setString(2, eventTitle); 
    preStmt.setString(3, networkID); 
    preStmt.setString(4, eventTitle); 
    preStmt.executeUpdate(); 
    con.commit(); 

    } catch (SQLException e) { 
     System.out.println("SQL Exception: "+ e.toString()); 
    } catch (ClassNotFoundException cE) { 
     System.out.println("Class Not Found Exception: "+ cE.toString()); 
    } 
} 
} 

내가 제출 한 데이터가 실제로 저장되지 않는 알고 완전하지만, SQL qorks 및 preparedStatement ... 그럼 제출 된 데이터의 일부만 저장하면 그냥 테스트입니다. 감사합니다.

+4

주 :'# {formData.startDate}}'}}'이중있다' – Bozho

+0

가 될 수 있을까'그 startDate' 또는'endDate'가'null'입니까? 프레임 워크가 null을 달력 입력 값으로 변환하는 데 어려움을 겪을 것이라고 생각합니다. –

+0

그래, startDate 주위의 이중 중괄호로 인해 ... 오타가 발생했습니다. 그러나 이제 데이터를 입력하고 제출하면 아무 일도 일어나지 않거나 데이터베이스에 저장되지 않습니다. 어떤 아이디어? –

답변

1

날짜 변환기를 사용해보세요. 당연히 여기에 자신의 시간대를 추가

<f:convertDateTime pattern="dd/MM/yyyy HH:mm" timeZone="GMT+5" />

이 코드 조각 워킹

<p:calendar id="end" value="#{message.endDate}" mode="popup" pattern="dd/MM/yyyy HH:mm" size="17"> 
            <f:convertDateTime pattern="dd/MM/yyyy HH:mm" timeZone="GMT+5" /> 
           </p:calendar> 
+0

네 친구는 내가 실제로 날짜를 처리했다고 생각했지만 그렇게하지 않았을 것입니다. 코드에서 볼 수있는 것처럼 3 개의 필드를 저장하는 것입니다. –

+0

날짜를 처리 할 때 나중에 이것을 유지할 수있는 좋은 친구입니다. : D –

+0

ahhh u는 지금 당신의 문제가 아니라는 것을 의미합니다, 제출은 작동하지 않습니다 ?? 또는 당신은 더 이상 문제가 없는데, 날짜는 이전에 데이터베이스에 저장되지 않았으며 당신이 그것을 처리하지 않았기 때문에 당신이 알았습니다. 어떤거야 ?? – khizar

관련 문제