@PathVariable を介して、または中程度の負荷でバインディングを介して取得した値が間違った変数に割り当てられるという問題が発生しています。
これらのテストを行うために、常に同じ URL にアクセスしています。URL をゆっくりとヒットすると、毎回正しい結果が得られます。
Spring 3.0.5.RELEASE を使用していますが、3.1.2.RELEASE まで疲れていて、まだ問題があります。最近変更されたものは他にありません。これらのサービスは 1 年以上にわたって運用されており、最近になってこれらのサービスが開始されたようです。
バインディングのコード例:
@RequestMapping(value = "config/selectItem")
public ModelAndView selectItem(@Valid selectItemCommand command, BindingResult bindResults) {
if (!"test".equals(command.getName())
{
//Fails into here
int i =0;
}
}
パス変数のコード例:
@RequestMapping(value = "config/selectItem/{name}",method = RequestMethod.GET)
public ModelAndView selectItem(@PathVariable("name") String name)
{
if (!"test".equals(name))
{
//Fails into here
int i = 0;
}
}
パラメータ リストに HttpServletRequest リクエストを追加すると、表示される URL に正しい値が含まれています。
すっかり忘れていましたが、約1年前にこの問題が発生し、解決したと思っていたときにチケットを提出しましたが、解決していません. Spring MVC は @PathVariable をドロップしています