3 回答

TA貢獻1877條經驗 獲得超6個贊
不那么臟(據我所知)的方法是擴展請求:
public class WrappedHttpServletRequestWrapper extends HttpServletRequestWrapper
{
private final Map<String, String[]> modifiableParameters;
private Map<String, String[]> allParameters = null;
public WrappedHttpServletRequestWrapper (final HttpServletRequest request,
final Map<String, String[]> additionalParams)
{
super(request);
modifiableParameters = new TreeMap<String, String[]>();
modifiableParameters.putAll(additionalParams);
}
@Override
public Map<String, String[]> getParameterMap()
{
// allParameters contains old parameters + the ones you added
return Collections.unmodifiableMap(allParameters);
}
//... other overriden methods
}
并使用它來添加您的參數。這是參考。
以下是您將如何使用它:
Map<String, String[]> extraParams = new TreeMap<String, String[]>()
HttpServletRequest wrappedRequest = new WrappedHttpServletRequestWrapper(request, extraParams);
request.getRequestDispatcher("url").forward(wrappedRequest, response);

TA貢獻1852條經驗 獲得超7個贊
Spring MVC 提供了一組強大的功能來自動為您解析和映射 HTTP 請求和響應,因此您不必手動執行,可以專注于業務邏輯。在這種情況下,Spring 可以為您提供所有請求參數的映射,如下所示:
@PostMapping("/abc") public void abc(@RequestParam Map<String, String> params) { ... }
(或者,如果您需要多值參數,您可以使用MultiValueMap
,它更符合標準,但使用起來更復雜)。你會得到一份地圖的私人副本,實際上它是一個可變的LinkedHashMap
,但如果你不確定你總是可以直接說new HashMap<>(params)
.
一旦你有了這個params
地圖,你可以添加任何你想要的附加值,但除非你可以在你自己的應用程序中將某人發送到另一個控制器,否則你需要生成一個redirect:
響應(在這種情況下,VIN 將在URL)或自己向其他服務發出 REST 請求,然后將信息轉發回用戶。
添加回答
舉報