我想在这里切断JSP中间人。我有一个POST Spring端点,它返回一个表示视图的字符串。这个视图是一个JSP("中间人"),它只是将$(document).ready()
上隐藏的HTML输入元素POST到另一个系统的URL。为了删除这个JSP,我需要在已经提到的调用控制器中填充请求参数(例如,request.setAttribute("var1", "val1")
)。
第一个问题:我应该通过返回"forward:" + URL
来执行此操作吗?重定向似乎不是一个选项,因为外部系统的端点期望POST(而不是 get ,这将是此流程的第一个重定向后获取模式)。
第二个问题:JSP中有一个循环多次填充相同的隐藏输入元素:
<c:forEach var="elem" items="${requestScope.elements}">
<input type="hidden" name="thing" value="<c:out value="${elem}"/>">
</c:forEach>
我如何将其迁移到调用控制器。也许,这样的事情:
@RequestMapping(value = "/path_val", method = RequestMethod.POST)
public String handleRequest(HttpServletRequest request) {
// below is the code in question
@SuppressWarnings("unchecked")
List<String> elements = (List<String>) request.getAttribute("elements");
for (ListIterator<String> elemIter = elements.listIterator(); elemIter.hasNext();) {
request.setAttribute("item[" + elemIter.nextIndex() + "]", elemIter.next());
}
return "forward:" + outsideURL;
}