プロパティを持つ基本クラスReportElementがありtypeます:
public abstract class ReportElement {
private ReportElementType type;
public ReportElementType getType() {
return type;
}
public void setType(ReportElementType type) {
this.type = type;
}
}
ReportElementTypecode各要素に指定されたi18nKeyプロパティを持つ列挙型です。のサブクラスがいくつかありReportElement、それぞれが独自のプロパティを導入しています。それらの1つはプロットです:
public class Plot extends ReportElement {
public Plot() {
setType(ReportElementType.PLOT);
}
private Collection<Parameter> parameters = new ArrayList<Parameter>();
public Collection<Parameter> getParameters() {
return parameters;
}
}
一部のページでは、さまざまなインスタンスのコレクションを表示する必要があったReportElementため、struts2selectタグを使用しました。
<s:select list="myElements" listKey="type.code" listValue="type.i18nKey" size="20"/>
これは、インスタレーションを除くすべての要素の魅力のように機能しPlotました。呼び出す代わりに、getType().getCode()またはgetType().getI18nKey()プレーンが!toString()のすべてのインスタンスで呼び出されました。Plot数時間の楽しいデバッグの後、タグ評価中にPlotのgetParameters()メソッドが呼び出されることに気づきました。だから、ストラットは方法を評価type.codeしtype.i18nKeyて使用しようとしていたようgetParameters()です!それを怠ると、プロパティの存在が無視され、使用法を明確に指定しました。
問題がなくなったgetParametersような奇妙な名前に名前を変更した後。getParammsまた、selectタグの代わりにプロパティタグと一緒にイテレータタグを使用しても問題は発生していません。
どのプロパティを使用するかを明確に指定したのに、 struts selectタグparametersが私のBeanのプロパティを使用する理由を誰かが知っていますか?それはいくつかの「クールな」機能ですか、それともバグですか?
PS私は支柱2.2.3.1を使用します