gpt4 book ai didi

Java 8 : Fetching selective request parameters

转载 作者:搜寻专家 更新时间:2023-11-01 04:07:40 24 4
gpt4 key购买 nike

我正在尝试从 request

中找到所有以 MultiFileId_ 开头的请求参数

我正在遍历所有 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 中实现这一点?

最佳答案

如果您确定每个参数只有一个值:

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[]length > 1), 你可以使用:

import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;

public class Example2 {
public void example(HttpServletRequest request) {

List<String> uploadedFileIds = Collections
.list(request.getParameterNames())
.stream()
.filter(parameterName -> parameterName.startsWith("MultiFileId_"))
.flatMap(parameterName -> Arrays.stream(
request.getParameterValues(parameterName)))
.collect(Collectors.toList());
}
}

关于Java 8 : Fetching selective request parameters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29780935/

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