Java 8 : 获取选择性请求参数
Java 8 : Fetching selective request parameters
我正在尝试从 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());
}
}
这是另一种方式:
List<String> uploadedFileIds = request.getParameterMap().entrySet()
.stream()
.filter(e -> e.getKey().startsWith("MultiFileId_"))
.flatMap(e -> Arrays.stream(e.getValue()))
.collect(Collectors.toList());
我正在尝试从 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());
}
}
这是另一种方式:
List<String> uploadedFileIds = request.getParameterMap().entrySet()
.stream()
.filter(e -> e.getKey().startsWith("MultiFileId_"))
.flatMap(e -> Arrays.stream(e.getValue()))
.collect(Collectors.toList());