我一直在浏览几个链接,了解我们如何从过滤器重定向到上一页。
我想做什么
有一个A.jsp
。点击提交后,会转到其中一个检查某个内容的过滤器,如果出现问题,则会将其发送回A.jsp
。
我尝试的解决方案
我无法使用request.getHeader("referrer")
,因为在我提交网页时网址会发生变化。所以它会第一次起作用,但之后就会失败。
在每个jsp中添加隐藏输入,这些输入将作为请求参数发送,我们可以在过滤器中使用它来发送回来。这可以工作但是由于jsps的大量计数,它将需要在每个jsp页面中进行更改,这是我不想要的。
我有什么遗失的吗?
处理这种情况的任何标准方法?
答案 0 :(得分:1)
可能有更好的选项,但在没有其他答案的情况下,您可以使用javascript自动将隐藏的输入添加到每个表单。如果您的页面之间共享了内容的jsp-includes,则可以添加一个脚本标记,其中包含如下所示的函数:
window.onload = function(){
for (var i = 0; i < document.forms.length; i++)
{
var form = document.forms[i];
(function(form){
form.addEventListener('submit', function(e){
var element = document.createElement('input');
element.setAttribute('type', 'hidden');
element.setAttribute('name', 'returnpage');
element.setAttribute('value', window.location);
form.appendChild(element);
});
})(form);
}
};