0

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

ValidJourneyRecord类的瞬态布尔属性。其声明如下所示:

@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 版。

搜索豆:

@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>
...
4

1 回答 1

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为另一个仅返回一个元素并工作的瞬态属性。

感谢所有评论。

于 2013-06-28T18:46:02.413 回答