我正在将我的项目从 WebSphere 7 迁移到 WebSphere 8,并且使用 JSF 1.2。
我遇到了 IBM JSF/html_extended 标签和标准转换器的问题,这些转换器主要是 JSF 1.2 核心组件。我还将我的 Java EE 版本从 5 更新到 6(这可能不是原因)。最后还给出了一个组件树。
下面是我的堆栈跟踪:
javax.faces.component.UpdateModelException: org.apache.jasper.el.JspELException: /sc40/NewContract.jsp(130,5) '#{pc_NewContract.overrideAsOfDtSQL}' Cannot convert 4/23/12 12:00 AM of type class java.util.Date to class java.sql.Date
at javax.faces.component.UIInput.updateModel(UIInput.java:398)
at javax.faces.component.UIInput.processUpdates(UIInput.java:299)
at javax.faces.component.UIForm.processUpdates(UIForm.java:187)
at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1258)
at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1258)
at javax.faces.component.UIViewRoot._processUpdatesDefault(UIViewRoot.java:1321)
at javax.faces.component.UIViewRoot.access$600(UIViewRoot.java:75)
at javax.faces.component.UIViewRoot$UpdateModelPhaseProcessor.process(UIViewRoot.java:1423)
at javax.faces.component.UIViewRoot._process(UIViewRoot.java:1282)
at javax.faces.component.UIViewRoot.processUpdates(UIViewRoot.java:765)
at org.apache.myfaces.lifecycle.UpdateModelValuesExecutor.execute(UpdateModelValuesExecutor.java:34)
at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:171)
at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:189)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1147)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:722)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:449)
at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1020)
at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3639)
at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:304)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:950)
at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1659)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:195)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:452)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:511)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:305)
at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:83)
at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:816)
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1648)
Caused by: org.apache.jasper.el.JspELException: /sc40/NewContract.jsp(130,5) '#{pc_NewContract.overrideAsOfDtSQL}' Cannot convert 4/23/12 12:00 AM of type class java.util.Date to class java.sql.Date
at org.apache.jasper.el.JspValueExpression.setValue(JspValueExpression.java:98)
at javax.faces.component.UIInput.updateModel(UIInput.java:380)
... 35 more
'#{pc_NewContract.overrideAsOfDtSQL}' 无法将 4/23/12 12:00 AM 类型类 java.util.Date 转换为类 java.sql.Date
你显然有一个
private java.sql.Date overrideAsOfDtSQL;
这是不正确的。这java.sql.*
类型做not属于模型。替换为java.util.Date
.
private java.util.Date overrideAsOfDtSQL;
当您使用时,同样的答案适用java.sql.Time
.
注意java.sql.Date
and java.sql.Time
是的子类java.util.Date
,这就是为什么它在从对象转换为字符串时起作用<f:convertDateTime>
。仅从字符串转换为对象是行不通的,因为<f:convertDateTime>
总是转换为java.util.Date
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)