表达式语言和接口

时间:2012-06-06 17:08:32

标签: java jsp spring-mvc jstl el

我不是JSTL和表达语言的专家,所以我的问题可能很愚蠢......

我正在使用Spring MVC并且在我的控制器中我有:

@ModelAttribute("export_types")
public ExportType[] getExportTypes() {
    return edService.getTypes();
}

ExportType是一个自定义界面:

public interface ExportType {

    String getName();

    //...
}

在我的页面中,我有:

<c:forEach var="item" items="${export_types}">
    <tr>
        <td><input type="checkbox" value="${item.name}"></td>
        <td>${item.name}</td>
    </tr>
</c:forEach>

但是当我运行我的网络应用程序时,我得到了这个期望:javax.el.PropertyNotFoundException: Property 'name' not found on type java.lang.String

奇怪的是,例外on type java.lang.String而不是ExportType类型。所以我的问题是:我不能将表达式语言与接口一起使用吗?


注1

edService.getTypes()返回一个ExportType[]数组,其中包含接口的具体实现。

为了清楚起见,我有一个实现ExportType接口的抽象类。具体类型继承自:

public abstract class AbstractExportType implements ExportType {
    protected String name;

    protected AbstractExportType() {
        this.name = this.getClass().getSimpleName();
    }

    @Override
    String getName(){
        return this.name;
    }

    //...
}

注2

转发到export.jsp的控制器方法非常简单:

@RequestMapping(value = "/export", method = RequestMethod.GET)
public String getExportForm() {
    return "jsp/export";
}

1 个答案:

答案 0 :(得分:0)

我不认为它与接口有任何关系。最有可能是@doublep说,export_types实际上不是ExportType[]。我已经尝试过复制你正在做的事情并且工作正常。