JSF无法将给定的对象格式格式化为日期 [英] JSF Cannot format given Object as a Date

查看:131
本文介绍了JSF无法将给定的对象格式格式化为日期的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我写了一个简单的表单和托管的bean来存储提交到SQL Server的数据。下载sqljdbc并安装它。发生以下情况:

  javax.servlet.ServletException:不能将给定的对象格式作为日期格式

不确定发生了什么...

 < 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>预约请求< / title>
< / h:head>
< body>
< h:form>
< h2>事件详细信息:< / h2>
< table cellspacing =10>
< tr>
< td>
事件标题:
< / td>
< td>
< p:inputText id =eventTitlevalue =#{formData.eventTitle}/>
< / td>
< / tr>
< / table>
< table>
< tr>
< td>
< p:tab title =startDate>
< h:panelGrid columns =2cellpadding =10>
< label>开始日期< / 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 =2cellpadding =10>
< label>结束日期< / label>
< p:calendar value =#{formData.endDate}required =true/>
< h:message for =endDate/>
< / h:panelGrid>
< / p:tab>
< / td>
< / tr>
< tr>
< td>
请求类型/用途:
< / 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>
需要工作站:
< / td>
< td>
< p:inputText value =#{formData.terminalsRequired}id =terminal/>
< / td>
< / tr>
< / table>
< br>< / br>
< h2>请求者信息:< / h2>
< table cellspacing =10>
< tr>
< td>
姓氏:
< / td>
< td>
< p:inputText value =#{formData.lastName}id =lastName/>
< / td>
< td>
名字:
< / 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>
徽章:
< / td>
< td>
< p:inputText value =#{formData.badgeNo}id =badgeNo/>
< / td>
< td>
网络ID:
< / td>
< td>
< p:inputText value =#{formData.networkID}id =networkID/>
< / td>
< td>
电话:
< / td>
< td>
< p:inputText value =#{formData.telephoneNo}id =phoneNo/>
< / td>
< / tr>
< tr>
< td>
组织代码:
< / td>
< td>
< p:inputText value =#{formData.orgCode}id =orgCode/>
< / td>
< td>
组织名称:
< / td>
< td>
< p:inputText value =#{formData.orgName}id =orgname/>
< / td>
< / tr>
< / table>
< br>< / br>
< table>
< tr>
< td>
< b>对齐:< / b>
< / td>
< / tr>
< tr>
< td>
< p:inputTextarea value =#{formData.justification}id =justificationcols =80rows =10/>
< / td>
< / tr>
< tr>
< td>
< h:commandButton value =提交数据! action =#{formData.storeTheData()}/>
< / td>
< / tr>
< / table>
< / h:form>
< / body>
< / html>

,支持bean是:

  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 terminRequired;
String lastName;
String firstName;
String middleInitials;
int badgeNo;
String networkID;
String telephoneNo;
String orgCode;
String orgName;
String trainingOption;
String projectOption;
字符串对齐;
/ *结束变量声明* /

/ **创建一个新的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 terminRequired;
}

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

public void storeTheData(){
//准备的statenebts
PreparedStatement preStmt = null;


尝试{
Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver);
String connectionUrl =jdbc:sqlserver:// localhost:1433; +
xxxx; user = sa; password = xxxxx;;
连接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 ...因此只存储部分提交的数据。
谢谢,

解决方案

尝试使用日期时间转换器。



< f:convertDateTime pattern =dd / MM / yyyy HH:mmtimeZone =GMT + 5/>



添加您自己的时区,这里是一个工作片段

 < p:calendar id = endvalue =#{message.endDate}mode =popuppattern =dd / MM / yyyy HH:mmsize =17> 
< f:convertDateTime pattern =dd / MM / yyyy HH:mmtimeZone =GMT + 5/>
< / p:calendar>


I wrote a simple form and managed bean to store the data submitted to SQL server. downloaded sqljdbc and got it installed. The following occurs:

javax.servlet.ServletException: Cannot format given Object as a Date

unsure what is really happening...

<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>

and the backing bean is:

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());
    }
}
}

I know the data submitted isn't actually being stored fully, but I am just testing if SQL qorks and preparedStatement...hence storing only part of the submitted data. Thanks,

解决方案

try using the date time converter.

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

add your own time zone ofcourse here is a working snippet

<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>

这篇关于JSF无法将给定的对象格式格式化为日期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆