HypermediaType HAL を備えた Spring Hateoas で Spring MVC を使用する Web アプリケーションがあります。私のコントローラーでは、Resources クラスを使用してサブジェクトのリストを入れています。問題は、1 つの要素のリストを入れた場合、結果の json の構造が 2 つの要素を入れた場合と区別されることです。リストに要素が 1 つしか含まれていない場合、リストは削除され、単一のオブジェクトとして返されます。2 つのコントローラー メソッドの下に、結果の Json を貼り付けました。
私は今知りたいのですが、なぜそのような動作なのか、結果のjsonでHateoasに強制的にリストを使用させるにはどうすればよいですか?
@Controller
@RequestMapping(value = "/collections")
public class CollectionController {
@RequestMapping
public HttpEntity<Resources<Subject>> getOneSubject() {
Subject subject = new Subject();
Resources<Subject> subjects = new Resources<>(asList(subject));
return new ResponseEntity<>(subjects, HttpStatus.OK);
}
/*HTTP-Response Body:
{
"_embedded": {
"subject": {
"name": null
}
}
}
*/
@RequestMapping
public HttpEntity<Resources<Subject>> getTwoSubjects() {
Subject subject = new Subject();
Resources<Subject> subjects = new Resources<>(asList(subject, subject));
return new ResponseEntity<>(subjects, HttpStatus.OK);
}
/*HTTP-Response Body:
{
"_embedded": {
"subjectList": [
{
"name": null
},
{
"name": null
}
]
}
}*/
}
Hateoas の構成:
@Configuration
@EnableHypermediaSupport(type = EnableHypermediaSupport.HypermediaType.HAL)
public class HateoasConfig {
}