【问题标题】:forward to a tab from java servlet从 java servlet 转发到选项卡
【发布时间】:2013-04-03 11:47:31
【问题描述】:

在我的 JSP 页面中,我有一些选项卡。每个选项卡都包含一些表单域。当我单击提交按钮时,它会调用一个 servlet。处理完 servlet 后,有什么方法可以从 servlet 转到下一个选项卡。

这是index.jsp 标签和第一个标签的代码

<div class="span12">
        <div class="navbar btn-navbar">
            <div id="tabs" class="tabbable">
                <ul id="myTab" class="nav nav-tabs">
                    <li class="active"><a href="#datacollector" target="main"
                        data-toggle="tab">Data Collector</a></li>
                    <li id="fromDB" class="selectDataloadType" style="display: none;"><a
                        href="#fromDatabase" target="main" data-toggle="tab">Data Load
                            Database</a></li>
                    <li id="fromFile" class="selectDataloadType" style="display: none;"><a
                        href="#fromFiles" target="main" data-toggle="tab">Data Load
                            File</a></li>
                    <li id="email" class="selectDataloadType" style="display: none;"><a
                        href="#fromEmail" target="main" data-toggle="tab">Data Load
                            Email</a></li>
                    <li id="webServices" class="selectDataloadType"
                        style="display: none;"><a href="#fromWebServices"
                        target="main" data-toggle="tab">Data Load Web</a></li>
                    <li><a href="#datamap" target="main" data-toggle="tab">Data
                            Map</a></li>
                    <li><a href="#schedule" target="main" data-toggle="tab">Schedule</a></li>
                </ul>
                <br> <br> <br> <br> <br>
                <div id="myTabContent" class="tab-content">
                    <div class="tab-pane fade in active" id="datacollector">
                        <div class="container">
                            <div class="row">
                                <div class="span8">
                                    <form name="selectType" action="selectType" method="get">
                                        <fieldset>
                                            <label class="control-label" for="dataloadType">Data
                                                load Type:</label> <select id="dataloadType" name="dataloadType">
                                                <option>Choose Data load Type</option>
                                                <option value="fromDB">From Database</option>
                                                <option value="fromFile">From File</option>
                                                <option value="email">E-mail</option>
                                                <option value="webServices">Web Services</option>
                                            </select>
                                            <p>
                                                <button type="submit" class="btn btn-success">Submit</button>
                                            </p>
                                        </fieldset>
                                    </form>
                                </div>
                            </div>
                        </div>
                    </div>

所以当我点击提交按钮时,它会调用 servlet。在我的 servlet 中,我正在处理一些东西。之后,我希望 servlet 重定向到相同的 index.jsp 和下一个选项卡 在我的 servlet 中,我尝试了这个

RequestDispatcher rd = request.getRequestDispatcher("index.jsp#fromDatabase");
rd.forward(request, response);

但它不起作用。有什么办法吗?

在尝试@JB Nizet 给出的解决方案后更新 1

这是我的LI代码

<li id="fromDB" class="selectDataloadType <c:if test="${activeTab == 'fromDatabase'}">active</c:if>" style="display: none;"><a
                        href="#fromDatabase" target="main" data-toggle="tab">Data Load
                            Database</a></li>

然后它在我的 index.jsp 中显示以下内容

我知道这是因为双引号。我无法纠正它。

【问题讨论】:

    标签: jsp servlets


    【解决方案1】:

    servlet 应该简单地决定哪个选项卡必须处于活动状态,并将此信息存储在请求属性中,然后再转发到 JSP。例如:

    request.setAttribute("activeTab", "fromDatabase");
    

    JSP 应该使用这些信息来激活相应的选项卡。例如:

    <li id="fromDB" class="selectDataloadType <c:if test="${activeTab == 'fromDatabase'}">active</c:if>" ... 
    

    (对于标签内容也是如此)

    【讨论】:

    • 谢谢。但是当我在浏览器中打开 index.jsp 时,这似乎是一个问题。请查看问题中的更新1
    • 检查生成的 HTML 代码(在浏览器中查看页面源代码)。确保在您的 JSP 中声明了 JSTL 核心标记库。
    • 那么我是否必须下载该 jstl jar 并将其包含到我的库中并将以下代码包含到我的 JSP 中? &lt;%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %&gt;
    • 是的。按照我链接到的页面的说明进行操作。
    猜你喜欢
    • 1970-01-01
    • 2017-07-24
    • 2011-06-25
    • 1970-01-01
    • 1970-01-01
    • 2013-02-27
    • 2015-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多