0

私はサーブレットでいくつかの操作を行っており、セッションで同じ設定を行っており、ページにリダイレクトするときに値を使用しています。しかし、ページにリダイレクトしている間、値は来ていません。

これは非常に基本的な質問であることは知っていますが、それでも私にはできません。

ここに私のサーブレットがあります:

protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        String path = getServletContext().getRealPath("/accesscarddata/");

        doGet(request, response);
        readFile(request, response);
        prepareExcelEmployeeListToMap(request, response);
        classifyEmployeesMapEntries(request, response);
        prepareReport(request, response);
        generateLeaveReport(request,response);

        //request.getRequestDispatcher("upload.jsp").forward(request, response);
        response.sendRedirect("upload.jsp");

    }

これらの両方を試しましたが、値がjspに来ていません。

編集:これは私がjspのセッションから読む方法です

<%@ page contentType="text/html"%>
<%@ page pageEncoding="UTF-8"%>
<%@ page import="java.util.*"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%
        String leaveReport = "";
        if ((session.getAttribute("leaveReport") != null)) {
            leaveReport = (String) session.getAttribute("leaveReport");
        }
%>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Comparing access-card Data with leave manager Data</title>
    <link href="css/sling.css" rel="stylesheet" type="text/css" />
    <script language="JavaScript" src='script/cal.js'></script>
    <!-- Below imports for Blanket purpose-->
    <script src='script/blanket.js'></script>

%> 

これは、ページの読み込み中に値を取得しようとする方法です。最初にjavascriptアラートが表示されますが、リクエストがサーブレットからリダイレクトされると、alortは表示されません。

bodyOnLoad();
    function bodyOnLoad(){
        alert("bodyOnLoad");
        var leaveReport = '<%=leaveReport%>';
        alert("leaveReport :"+leaveReport);
        if(leaveReport!=null && leaveReport!=""){
            displayLeaveReport(leaveReport);
        }
    }

これが私のjavascriptメソッドです:

function displayLeaveReport(leaveReport){
            if(leaveReport == ""){
                document.getElementById("leaveReport").style.display = "none";
            } else{
                document.getElementById("leaveReport").style.display = "";
            }
        }

JSP:

<tr>
                            <td width="100%" valign="top">
                                <table width="100%" border="0" cellspacing="0" cellpadding="0">
                                    <tr>
                                        <td class="title_box" align="left">Leave to be availed Employees</td>
                                    </tr>
                                </table>
                                <table width="100%" align="center" border="0" cellspacing="0" cellpadding="0">
                                    <tr>
                                        <td width="100%" align="left" class="tableBorder" valign="top">
                                            <table width="100%"  border="0" cellspacing="0" cellpadding="0" bgcolor="#f9fae3" >
                                                <tr class="lightrow">
                                                    <td width="10%" class="title_sub" align="center">S.No</td>
                                                    <td width="35%" class="title_sub" align="center">Employee ID</td>
                                                    <td width="35%" class="title_sub" align="center">Employee Name</td>
                                                    <td width="20%" class="title_sub" align="center">Action</td>
                                                </tr>
                                            </table>
                                            <div id="leaveReport" align="right" style="display : none;height:100px; overflow:auto"></div>
                                        </td>
                                    </tr>
                                </table>
                            </td>
                </tr>
4

1 に答える 1

0

dwr などの ajax 技術を使用する場合は div タグに値を設定できますが、div タグに値を設定できない場合は、jsp で次のようにコードを変更すると、値が表示されます。

if(reportMap.size()>0){
     Iterator<Map.Entry<String, String>> entries = reportMap.entrySet().iterator();
     while (entries.hasNext()) {
        Map.Entry<String, String> entry = entries.next();
        employeeid = entry.getKey();
        employeename = entry.getValue();
        %>
        <tr class='<%=classname %>'>
        <td width="10%" class="title_sub" align="center"><%=sno %></td>
        <td width="35%" class="title_sub" align="center"><%=employeeid %></td>
        <td width="35%" class="title_sub" align="center"><%=employeename %></td>
        <td width="20%" class="title_sub" align="center">Action</td>
        </tr>
        <%
        style++;
        }
        }
于 2012-05-25T10:42:08.043 に答える