【问题标题】:rendered="#{search.journeyRecord.valid}": Cannot convert valid of type class java.lang.String to class java.lang.Integer渲染=“#{search.journeyRecord.valid}”:无法将类型类java.lang.String的valid转换为类java.lang.Integer
【发布时间】: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&lt;ui:param name="valid"&gt; 的托管 bean?尝试将valid 属性/变量之一重命名为独特的名称。
  • 谢谢。那是 journeyRecord 属性已更改为列表。我发布了整个情况的答案。

标签: jsf richfaces facelets el


【解决方案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&lt;JourneyRecord&gt;。属性类型已被团队中的其他人更改。

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

感谢所有评论。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-22
    • 2017-04-21
    • 1970-01-01
    • 2017-04-24
    • 2018-06-10
    • 1970-01-01
    • 2011-03-15
    相关资源
    最近更新 更多