2017-05-10 82 views
1

作爲我寫入的Java控制器的方法獲取如下所示的File類型化參數。參數爲空時作爲參數

@RequestMapping(value = "/user/insertUser") 
public String insertUser(@RequestParam("imageFile") CommonsMultipartFile file, 
     HttpSession session) throws Exception { 
......} 

我的問題是,如果沒有從JSP發送的文件參數,我該如何處理它。 我不確定我的解釋是否可以理解。

+0

嘗試'required = false' –

回答

4

您可以設置defaultValue處理null情況:

@RequestMapping(value = "/user/insertUser") 
public String insertUser(@RequestParam(value = "imageFile", required = false, defaultValue = "/default/path/to/file") CommonsMultipartFile file, 
     HttpSession session) throws Exception { 
......} 
+0

這是一個在Java中非常有用的功能! – AxelH

+0

感謝您的幫助。但我也必須做一個文件空格檢查,如if(file.getSize()!= 0){..... –

+0

如果沒有參數發送,你可以設置'required = false',那麼它將爲空。然後你可以做這些驗證。 –

0

我相信你正在試圖使它作爲可選的,你可以做

@RequestParam(value = "imageFile", required = false) 
0

可以按如下方式做到這一點:

@RequestMapping(value = "/user/insertUser") 
public String insertUser(@RequestParam("imageFile") CommonsMultipartFile file, 
     HttpSession session) throws Exception { 

     if(file!=null && !file.isEmpty()) { 
      //file is uploaded successfully 
     } else { 
      //file is not uploaded 
     } 
} 
0

您需要爲imageFile提供required = false

@RequestMapping(value = "/user/insertUser") 
public String insertUser(@RequestParam("imageFile", required = false) CommonsMultipartFile file,HttpSession session) throws Exception { 
......} 
0

如果你的問題是你是否可以提供一個可選的參數作爲請求參數,可以做到這一點通過簡單地改變你的@RequestParam以下。

@RequestParam(value = "imageFile", required = false) CommonsMultipartFile file 

如果您使用的是Java 8,還可以執行以下操作。

@RequestParam("imageFile") Optional<CommonsMultipartFile> file 

如果您的問題不是這個,請提供更多詳情。

0

在這裏,您可以將此參數設置爲required = false,以便您可以選擇是否使用此參數。

{ 
    @RequestMapping(value = "/user/insertUser") 
    public String insertUser(@RequestParam(value="imageFile",required=false) CommonsMultipartFile file, 
     HttpSession session) throws Exception { 
......} 
} 

使用此,如果您發送「鏡像文件」,那麼你將獲得服務器,否則你沒有發送「鏡像文件」,那麼你會得到它空。