rendered =“#{search.journeyRecord.valid}”:无法将类型类java.lang.String的有效转换为类java.lang.Integer

时间:2013-06-28 16:11:28

标签: jsf richfaces facelets el

我有一个带有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>
...

1 个答案:

答案 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.journeyRecordList<JourneyRecord>。属性类型已由团队中的其他人更改。

正如@BalusC所说,这是一个复杂的类型。 EL尝试使用toString()方法获取其内容,然后将其转换为Integer。我将search.journeyRecord更改为另一个仅返回元素并且有效的瞬态属性。

感谢所有评论。