web-dev-qa-db-ja.com

送信プロセスの完了後にjspページでアラートメッセージを作成する方法

プロセスが完了したら、送信ボタンを押してjspにメッセージを追加しようとしています。

function onSubmit() {
alert("Master_Data.xlsx and Consistency_Check_Data.xlsx are located under d:/stage/MasterDataReports");
}
</script>
<body>

<form name="input" action="getMasterData" method="get">



    <br />
    <br />
    <h1 align='center'>Master Data File</h1>
    <br />
    <br />


    <table border="0" align='center'>
        <tr>
            <td>
                <h2>Site Name</h2>
            </td>
            <td align='left'>
            <jsp:useBean id="masterDao" class="master.dao.MasterDataDao"/>
            <select name="siteId" id="siteId">
            <option value="0">ALL</option>
             <c:forEach items="${masterDao.allSites}" var="siteDto">
             <option value="${siteDto.id}">${siteDto.name}</option>
            </c:forEach>
            </select></td>
        </tr>
        <tr>
            <td>
                <h2>Division</h2>
            </td>
            <td align='left'>
            <jsp:useBean id="masterDaoUtil" class="master.dao.util.MasterDataConstants"/>
            <select name="divisionId" id="divisionId">
            <option value="33"><%=MasterDataConstants.DIVISION_TYPE_AUDIT_MANAGEMENT_GLOBAL_NAME%></option>
            <option value="31"><%=MasterDataConstants.DIVISION_TYPE_CHANGE_MANAGEMENT_GLOBAL_NAME%></option>
            <option value="34"><%=MasterDataConstants.DIVISION_TYPE_DEA_MANAGEMENT_GLOBAL_NAME%></option>
            <option value="35"><%=MasterDataConstants.DIVISION_TYPE_EHS_MANAGEMENT_GLOBAL_NAME%></option>
            <option value="23"><%=MasterDataConstants.DIVISION_TYPE_EVENT_MANAGEMENT_GLOBAL_NAME%></option>
            </select></td>
        </tr>

    </table>
    <br />
    <br />
    <div style="text-align: center">
        **strong text**<input type="submit" value="Submit" OnClick="onSubmit()">
    </div>

現在、送信プロセスはアラートをクリアした後にのみ発生します。送信プロセスが完了した後、またはjspページにメッセージを追加できる場合、アラートをポップする方法はありますか?事前に感謝しますSonny

エラーの原因となっている更新されたサーブレットは次のとおりです。

package master.service;

import Java.io.IOException;
import Java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
**strong text**import javax.servlet.http.HttpSession;



@SuppressWarnings("serial")

public class MasterDataServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response, HttpSession session)
        throws IOException, ServletException {
    MasterDataService masterDataService = new MasterDataService();
    try {
        int siteId = Integer.parseInt(request.getParameter("siteId"));
        int divisionId = Integer.parseInt(request.getParameter("divisionId"));
        //For master data file
        masterDataService.createMasterDataFile(siteId, divisionId,false);
        //For consistency checker file 
        masterDataService.createMasterDataFile(siteId, divisionId,true);
        request.getRequestDispatcher("/masterDataQueryScreen.jsp").forward(request, response);
        **strong text**session.setAttribute("getAlert", "Yes");//Just initialize a random variable.
        **strong text**response.sendRedirect("/masterDataQueryScreen.jsp");
    } catch (ClassNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

}
9
Sonny

したがって、getMasterDataサーブレットがresponse.sendRedirectをtest.jspにリダイレクトした後、みましょう。

Test.jspで

JavaScriptを作成する

<script type="text/javascript">
function alertName(){
alert("Form has been submitted");
} 
</script> 

そして下より

<script type="text/javascript"> window.onload = alertName; </script>

注:stackoverflowでコードを入力する方法がわからない!編集:私はちょうど方法を学びました

編集2:質問へ:これは完璧に機能します。別の質問。 JSPを最初に起動したときに、最初のアラートをどのように取り除くことができますか? 「フォームが送信されました」は、2回目の実行時に表示されます。これは、ロードが完了した後に表示されます。

それを行うには、セッションを使用することを強くお勧めします!

だからあなたがしたいことはあなたのサーブレットにあります:

session.setAttribute("getAlert", "Yes");//Just initialize a random variable.
response.sendRedirect(test.jsp);

test.jspよりも

<%
session.setMaxInactiveInterval(2);
%>

 <script type="text/javascript">
var Msg ='<%=session.getAttribute("getAlert")%>';
    if (Msg != "null") {
 function alertName(){
 alert("Form has been submitted");
 } 
 }
 </script> 

そして下より

<script type="text/javascript"> window.onload = alertName; </script>

そのため、そのフォームを送信するたびにセッションが渡されます!セッションがnullでない場合、関数が実行されます!

8
KapursaysHi

サーブレットで

 request.setAttribute("submitDone","done");
 return mapping.findForward("success");

あなたのjsp

<c:if test="${not empty submitDone}">
  <script>alert("Form submitted");
</script></c:if>
3
zawhtut

また、フォームが送信されるという新しいjspファイルを作成し、メインアクションファイルにそのファイル名を書き込むだけでもかまいません。

例えば。送信されたフォームはsucces.jspファイルにあります。その後、アクションファイルは

Request.sendRedirect("success.jsp")
0
Muntazir