プロパティを持つ基本クラスReportElement
がありtype
ます:
public abstract class ReportElement {
private ReportElementType type;
public ReportElementType getType() {
return type;
}
public void setType(ReportElementType type) {
this.type = type;
}
}
ReportElementType
code
各要素に指定された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を使用します