Fra*_*sco 1 java richfaces jsf-2
我有以下情况:
接口
public interface Ranged{
public Object getRangeStart();
public Object getRangeEnd();
public void setRangeStart(Object rangeStart);
public void setRangeEnd(Object rangeEnd);
public void setRange(boolean isRange);
public boolean getRange();}
Run Code Online (Sandbox Code Playgroud)
实施班级:
public class CreationDateRange implements Ranged, Serializable{
private static final long serialVersionUID = SerialVersionUID.getSerialVersionUID();
public DateRange()
{
super();
}
private Date dateFrom;
private Date dateTo;
private boolean isRange = false;
public Object getRangeStart()
{
return (Date)dateFrom;
}
public Object getRangeEnd()
{
return (Date)dateTo;
}
public void setRangeStart( Object from )
{
this.dateFrom = (Date)from;
}
public void setRangeEnd( Object to )
{
this.dateTo = (Date)to;
}
public void setRange( boolean isRange )
{
this.isRange = isRange;
}
public boolean getRange()
{
return isRange;
}}
Run Code Online (Sandbox Code Playgroud)
模型:
private Object updateDate = new DateRange();
private Object creationDate = new DateRange();
public void setUpdateDate( Object updateDate )
{
this.updateDate = updateDate;
}
public Object getUpdateDate()
{
return updateDate;
}
public void setCreationDate( Object creationDate )
{
this.creationDate = creationDate;
}
public Object getCreationDate()
{
return creationDate;
}
Run Code Online (Sandbox Code Playgroud)
JSF:
<f:viewParam name="creationDate" value="#{doiListController.model.creationDate}"/>
<f:viewParam name="updateDate" value="#{doiListController.model.updateDate}"/>
...
<td style="font-size: 5pt; border: 0; min-width:60px">
<rich:calendar value="#{listModel.creationDate.rangeStart}"
datePattern="yyyy-MM-dd" enableManualInput="true"
rendered="#{listModel.creationDate.range}">
<f:convertDateTime pattern="yyyy-mm-dd" />
</rich:calendar>
</td>
Run Code Online (Sandbox Code Playgroud)
错误:
>[exec] javax.faces.component.UpdateModelException: javax.el.PropertyNotFoundException: /view/doi/doiListView.xhtml @90,59 value="#{listModel.creationDate.rangeStart}": The cla
ss 'java.lang.String' does not have the property 'rangeStart'.
[exec] at javax.faces.component.UIInput.updateModel(UIInput.java:853)
[exec] at javax.faces.component.UIInput.processUpdates(UIInput.java:735)
[exec] at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1242)
[exec] at javax.faces.component.UIForm.processUpdates(UIForm.java:281)
[exec] at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1242)
[exec] at javax.faces.component.UIViewRoot.processUpdates(UIViewRoot.java:1231)
[exec] at com.sun.faces.lifecycle.UpdateModelValuesPhase.execute(UpdateModelValuesPhase.java:78)
[exec] at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
[exec] at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
[exec] at javax.faces.webapp.FacesServlet.service(FacesServlet.java:409)
[exec] at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1534)
[exec] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
[exec] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
[exec] at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
[exec] at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
[exec] at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98)
[exec] at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91)
[exec] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)
[exec] at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:326)
[exec] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:227)
[exec] at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:170)
[exec] at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:822)
[exec] at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:719)
[exec] at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1013)
[exec] at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
[exec] at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
[exec] at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
[exec] at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
[exec] at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
[exec] at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
[exec] at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
[exec] at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
[exec] at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
[exec] at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
[exec] at java.lang.Thread.run(Thread.java:619)
[exec] Caused by: javax.el.PropertyNotFoundException: /view/doi/doiListView.xhtml @90,59 value="#{listModel.creationDate.rangeStart}": The class 'java.lang.String' does not ha
ve the property 'rangeStart'.
[exec] at com.sun.faces.facelets.el.TagValueExpression.setValue(TagValueExpression.java:133)
[exec] at javax.faces.component.UIInput.updateModel(UIInput.java:818)
[exec] ... 34 more
Run Code Online (Sandbox Code Playgroud)
有人可以帮助我,告诉我我错过了什么,拜托?
异常和堆栈跟踪告诉那#{listModel.creationDate}是实际上一个String在表格的更新模型值阶段提交请求.
例如,如果您的视图中的某些内容事先listMode.setCreationDate()使用Stringas参数调用,则会发生这种情况.例如,通过一个<f:viewParam>,<h:inputHidden>,Converter-用于级,或任何其他返回一个String而不是所希望的对象类型.
在setter方法上放置一个断点并跟踪堆栈中的根本原因.或者,您也可以更换Object类型Ranged或更具体的类型,以便JSF可能抛出/显示转换异常/错误,这通常更自我解释.
| 归档时间: |
|
| 查看次数: |
5363 次 |
| 最近记录: |