ゴミ箱.net

汚物は消毒

またStruts2のバグ踏んだ

ついでにもう1つStruts 2のバグを踏んだ。

[#WW-4184] When a getter of an action calls getText("getterName.something"), method call stack overflow occurs - ASF JIRA

アクションクラスにgetterを用意し、その中でメソッドgetTextを呼び出す。
そのとき、getTextのパラメータとして「getterの名前.○○」を指定する。

public class HogeAction extends ActionSupport {
public String getPiyo(){
return getText("piyo.fuga");
}
}

また、アクションクラスと同名のプロパティファイルを用意し、「getterの名前.○○」をキーとする値が存在しないようにしておく。

このとき、JSPファイルからこのgetterを参照しようとすると無限再帰呼び出しが発生してスタックがオーバーフローする。
しかも<s:debug>タグを入れると例外が発生してデバッグできなくなってしまう。

このバグを踏むのはなかなかのレアケースだと思うが、レアなバグにはまる人間はまれによくいる。ちょうどここに1人。
万が一踏んでしまったらgetterの名前かgetTextの引数のどちらかを変えましょう。
スポンサーサイト

PageTop

コメント


管理者にだけ表示を許可する