如果我在getRequestDispatcher方法中使用以下url,我从Tomcat获得以下错误
404请求的资源不可用
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/nodes/node_configuration.jsp#tabs-3");
如果直接在地址栏上点击此URL,通常会将我带到jQuery构建的选项卡结构的第三个选项卡(使用https://jqueryui.com/tabs/
的源代码)。如果我删除#tabs-3
它不会引发错误,但它会将我带到第一个标签页。
我尝试通过将标签作为url参数传递来修改jsp来解决此问题。所以,现在网址为nodes/node_configuration.jsp?selectedTab=#tabs-3
。这在地址栏中工作正常,但调度员忽略了它。
答案 0 :(得分:1)
因为我不能这么做,所以我很难做到这一点。 在servlet中,我将选定的选项卡作为请求对象属性传递:
request.setAttribute("selectedTab", "3");
这是jsp中的脚本:
<script>
$(function() {
var param = document.getElementById("selectedTabInput").value;
if (param != 0) {
$('#tabs').tabs({
active : param
});
} else {
$('#tabs').tabs();
}
});
</script>
我从jsp主体内隐藏的输入值中选择选项卡:
<input type="hidden" id="selectedTabInput" value="${requestScope.selectedTab}">
答案 1 :(得分:0)
您必须意识到,该标签是前端(浏览器端)的关注点。因此,您必须将标签名称(或ID)从后端传递到前端,例如作为脚本变量,然后使用脚本切换到正确的选项卡(使用jQueryUI选项卡,例如使用active
选项)。
答案 2 :(得分:0)
getRequestDispatcher()
需要一个servlet路径(即没有应用程序的上下文路径的URL中的路径部分,并且所有内容都不以?和#开头)。
您无法将整个网址传递给它。
您可以使用请求属性将散列内容传递给JSP,即
request.setAttribute( "hashTarget", "tabs-3");
然后你必须在JSP中阅读它并启动一个JavaScript来对它进行操作。
(就像先前的回答中提出的那样。)