gpt4 book ai didi

java - 在 Spring MVC 中同时处理文件和文本输入字段

转载 作者:行者123 更新时间:2023-12-03 00:00:47 25 4
gpt4 key购买 nike

我有一个文件输入和文本输入的集合。每个文件输入都有一个相应的类型字段。我需要将这两个值作为列表检索。目前,我尝试过以下操作:

Controller 代码:

@RequestMapping(value = "/{id}", method = RequestMethod.POST)
public OutletIndex updateOutlet(@PathVariable String id,
@ModelAttribute @Valid OutletIndex outlet,
@RequestParam(value = "file", required = false) List<MultipartFile> file,
@RequestParam(value = "types", required = false) List<MultipartFile> types,
HttpServletRequest request
) {
//......
}

HTML 代码:

<input type="text" name="types"/>
<input type="text" name="types"/>
<input type="text" name="types"/>
<input type="text" name="types"/>
<input type="file" name="file"/>
<input type="file" name="file"/>
<input type="file" name="file"/>
<input type="file" name="file"/>
<小时/>

如果文件输入选择任何文件,则效果良好。如果我们不选择任何文件,它不会显示在列表中,但文本输入会显示,即使它是空的。我该如何解决这个问题?

我还尝试使用 request.getParameterMap() 获取值,但两种方法的结果是相同的。

当我选择 2 个文件时,输出会是这样的。

enter image description here

types 列表大小为 4file 列表大小为 2

如果没有选择文件,我可以在列表中将其设置为null吗?

最佳答案

执行此操作的最佳方法是让 POJO 映射文件和文本输入。我不确定您想要实现什么,但这可能会对您有所帮助..

你的pojo

public class FileWrapper {
private MultipartFile file;

private String type;

public MultipartFile getFile() {
return file;
}

public void setFile(MultipartFile file) {
this.file = file;
}

public String getType() {
return type;
}

public void setType(String type) {
this.type = type;
}
}

你的 Controller

@RequestMapping(value = "/file", method = RequestMethod.POST)
public OutletIndex updateOutlet(@ModelAttribute List<FileWrapper> fileWrapper) {
// ......

for (FileWrapper file : fileWrapper) {

if (file.getFile() != null && StringUtils.isNotEmpty(file.getType())) {
// your logic
}
}

}

你的jsp文件

<form method="post" action="/file" modelAttribute="fileWrapper">
<input type="text" name="types[0]" /> <input type="text"
name="types[1]" /> <input type="text" name="types[2]" /> <input
type="text" name="types[3]" /> <input type="file" name="file[0]" /> <input
type="file" name="file[1]" /> <input type="file" name="file[2]" /> <input
type="file" name="file[3]" />
</form>

这对您来说应该很舒服。可以尝试一下。

关于java - 在 Spring MVC 中同时处理文件和文本输入字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41221557/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com