私は 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.String
type ではなく言うことです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";
}