我正在尝试从MultiFileId_
request
开头的所有请求参数
我正在迭代所有request
键映射并检查每个键是否以MultiFileId_
开头,如果匹配则将其值添加到列表中
List<String> uploadedFileIds = new ArrayList<String>();
for (Object p : request.getParameterMap().keySet()) {
if(p.toString().startsWith("MultiFileId_")) {
String uploadedFileId = request.getParameter(p.toString());
uploadedFileIds.add(uploadedFileId);
}
}
在Java 8中有一种简单的方法可以实现这一点吗?
答案 0 :(得分:7)
如果您确定每个参数只有一个值:
import javax.servlet.http.HttpServletRequest;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
public class Example1 {
public void example(HttpServletRequest request) {
List<String> uploadedFileIds = Collections
.list(request.getParameterNames())
.stream()
.filter(parameterName -> parameterName.startsWith("MultiFileId_"))
.map(request::getParameter)
.collect(Collectors.toList());
}
}
如果您不确定参数是否具有多个值(即request.getParameterValues("MultiFileId_XXX")
返回带有String[]
的{{1}}),您可以使用:
length > 1
答案 1 :(得分:6)
这是另一种方式:
List<String> uploadedFileIds = request.getParameterMap().entrySet()
.stream()
.filter(e -> e.getKey().startsWith("MultiFileId_"))
.flatMap(e -> Arrays.stream(e.getValue()))
.collect(Collectors.toList());