2017-05-10 50 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 { 
......} 
} 

使用此,如果您发送“镜像文件”,那么你将获得服务器,否则你没有发送“镜像文件”,那么你会得到它空。