【发布时间】:2013-06-28 16:11:28
【问题描述】:
我有一个带有 RichFaces、Spring Web Flow 和 Hibernate 的 Java 动态 Web 模块项目(2.5 版)。该项目部署在 Apache Tomcat 中(服务器中为 6.0.20,我的机器中为 6.0.37 和 7.0.39,用于开发目的)。我经常收到此错误:
Caused by: javax.el.ELException: /WEB-INF/flows/monitoring/monitor.xhtml @139,114 rendered="#{search.journeyRecord.valid}": Cannot convert valid of type class java.lang.String to class java.lang.Integer
Valid 是来自JourneyRecord 类的瞬态布尔属性。其声明如下:
@Transient
public boolean isValid() {
if (search != null) {
return search.getStatus() == Search.WITH_INSURANCE_COVER;
} else {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.HOUR, -12);
return calendar.after(registrationDate);
}
}
我将 jsf-facelets Maven 包更新到 1.1.15 版。
搜索 Bean:
@Entity
public class Pesquisa implements Serializable {
...
private char status;
...
/**
* @return the status
*/
public char getStatus() {
return status;
}
/**
* @param status
* the status to set
*/
public void setStatus(char status) {
this.status = status;
}
...
}
旅程记录豆:
@Entity
public class RegistroViagem implements Serializable{
...
private Date registrationDate;
...
/**
* @return the registrationDate
*/
public Date getRegistrationDate() {
return registrationDate;
}
/**
* @param registrationDate
* the registrationDate to set
*/
public void setRegistrationDate(Date registrationDate) {
this.registrationDate = registrationDate;
}
...
@Transient
public boolean isValid() { ... }
...
}
JSF:
...
<rich:column style="text-align:center;">
<f:facet name="header">Protocol Number</f:facet>
<h:outputText value="#{search.journeyRecord.journeyNumber}" rendered="#{search.journeyRecord.valid}" />
</rich:column>
...
【问题讨论】:
-
能分享一下课堂旅程记录,搜索相关bean吗?
-
@HimanshuBhardwaj 我更新了我的答案。如果您需要更多信息,请告诉我;)
-
你能添加给你带来问题的JSF代码吗?
-
此代码不是 SSCCE 风格的。所以,我只能做一个猜测:Facelets 1.x 在复杂组合中的变量作用域存在一些问题。您是否碰巧在其他地方有一个名为
valid或<ui:param name="valid">的托管 bean?尝试将valid属性/变量之一重命名为独特的名称。 -
谢谢。那是
journeyRecord属性已更改为列表。我发布了整个情况的答案。