4

私は 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>

しかし、Web アプリを実行すると、次のことが期待されます。javax.el.PropertyNotFoundException: Property 'name' not found on type java.lang.String

奇妙なことは、例外がon type java.lang.Stringtype ではなく言うことです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";
}
4

1 に答える 1

0

インターフェイスとは関係ないと思います。おそらく @doublep が言うように、export_types実際にはExportType[]. 私はあなたがやっていることを再現しようとしましたが、うまくいきます。

于 2012-06-07T11:16:17.433 に答える