我有一个带有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
有效是来自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;
}
...
}
JourneyRecord Bean:
@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>
...
答案 0 :(得分:1)
对不起。这是我的混乱,但我认为这个问题对其他人有用。
这里是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>
...
search.journeyRecord
是List<JourneyRecord>
。属性类型已由团队中的其他人更改。
正如@BalusC所说,这是一个复杂的类型。 EL尝试使用toString()
方法获取其内容,然后将其转换为Integer
。我将search.journeyRecord
更改为另一个仅返回元素并且有效的瞬态属性。
感谢所有评论。