簡體   English   中英

如何在 Spring 中迭代 @RequestParam?

[英]How to iterate though @RequestParam in Spring?

我正在 Spring 中構建 API,我有一個簡單的問題:

在對它們執行一些邏輯之前,我想對下面的這些參數執行檢查以查看它們是否包含值。

我是 Spring 的新手 - 有沒有辦法將這些值“獲取”到某種數據結構中,以便我可以執行檢查?

        @RequestParam(value = "video") MultipartFile video,
        @RequestParam(value = "pictureOne") MultipartFile pictureOne,
        @RequestParam(value = "pictureTwo") MultipartFile pictureTwo,
        @RequestParam(value = "pictureThree") MultipartFile pictureThree,
        @RequestParam(value = "pictureFour", required = false) MultipartFile pictureFour,
        @RequestParam(value = "pictureFive", required = false) MultipartFile pictureFive,
        @RequestParam(value = "pictureSix",  required = false) MultipartFile pictureSix,
        @RequestParam(value = "pictureSeven", required = false) MultipartFile pictureSeven,
        @RequestParam(value = "pictureEight", required = false) MultipartFile pictureEight,
        @RequestParam(value = "pictureNine", required = false) MultipartFile pictureNine,
        @RequestParam(value = "pictureTen", required = false) MultipartFile pictureTen)

如果要對所有這些值執行驗證並在結構中關閉它,我建議創建 DTO 對象並將所有變量作為字段,例如:

public class FilesDto{
    private MultipartFile video;
    private MultipartFile photos[];
}
//Getters setters...

然后在你的控制器中

@Autowired
private SomeValidator someValidator;

@RequestMapping(method = RequestMethod.POST)
public void savePhotos(@Valid FilesDto filesDto) {
    ....
}

@InitBinder("filesDto")
protected void initBinde(WebDataBinder binder) {
    binder.setValidator(someValidator);
}

其中someValidator是實現Validator接口的類。 根據@mbridges 在評論中的說法,我還強烈建議使用數組而不是列出所有參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM