JSF无法将给定的对象格式格式化为日期 [英] JSF Cannot format given Object as a Date
问题描述
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屋!