質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%

Q&A

解決済

1回答

710閲覧

jspのリンクからサーブレットへ値を送信する

slfjlkjf

総合スコア32

0グッド

0クリップ

投稿2022/07/15 04:04

実現したいこと

サーブレット(ServletSend)から受け取った値をリンクとして表示し、リンクをクリックするとその値を別のサーブレット(ServletReceive)へ送信する処理を実現したい。
サーブレット(ServletSend)から受け取る値は、画面に入力した値をサーブレット(ServletSend)へ送信し、それを受け取る。

現在入力した文字をリンクとして画面に表示することには成功しているのですが、リンクをクリックするとエラーが出てしまいサーブレットへ値を渡すことができません。

発生している問題・エラーメッセージ

VM45 TestServlet:55 Uncaught ReferenceError: (リンクとして表示された文字) is not defined at HTMLAnchorElement.onclick (VM45 TestServlet:55:50)

該当のソースコード

hoge.jsp

1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 4<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> 5<!DOCTYPE html> 6<html lang="ja"> 7<head> 8<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 9<meta http-equiv="Content-Style-Type" content="text/css"> 10<script src="<%=request.getContextPath()%>/js/lib/jquery-3.6.0.min.js"></script> 11<script> 12 function sendTo(no){ 13 document.linkName.entryName.value=no; 14 document.linkName.submit(); 15 } 16</script> 17<title>test</title> 18</head> 19<body> 20 <div style="height: 600px;"> 21 <div> 22 <div style="text-align: center">フォームテスト</div> 23 <form action="<%=request.getContextPath()%>/ServletSend" 24 method="post"> 25 <div> 26 <table style="width: 425px"> 27 <colgroup> 28 <col style="width: 80px;"> 29 </colgroup> 30 <tr style="height: 40px;"> 31 <td><div>名前</div></td> 32 <td> 33 <div> 34 <input type="text" name="name" id="" value="${param.name}" /> 35 </div> 36 </td> 37 <td style="padding-left: 10px;"> 38 <div style="margin-top: -1px;" title="検索"> 39 <input type="submit"> 40 </div> 41 </td> 42 </tr> 43 </table> 44 </div> 45 </form> 46 47 <c:if test="${name != null}"> 48 <form action="<%=request.getContextPath()%>/ServletReceive" method="post" name="linkName"> 49 <div> 50 <div style="width: 950px; height: 490px; overflow-x: scroll;"> 51 <table class="list" style="width: 933px;"> 52 <tr style="height: 40px;"> 53 <td> 54 <input type="hidden" name ="entryName"> 55 <a href="#" onclick=sendTo(<%=request.getAttribute("name") %>)><%=request.getAttribute("name")%></a> 56 </td> 57 </tr> 58 </table> 59 </div> 60 </div> 61 </form> 62 </c:if> 63 </div> 64 </div> 65</body> 66</html>

ServletSend.java

1 2 3import java.io.IOException; 4 5import javax.servlet.ServletException; 6import javax.servlet.annotation.WebServlet; 7import javax.servlet.http.HttpServlet; 8import javax.servlet.http.HttpServletRequest; 9import javax.servlet.http.HttpServletResponse; 10 11/** 12 * Servlet implementation class TestServlet 13 */ 14@WebServlet("/ServletSend") 15public class TestServlet extends HttpServlet { 16 private static final long serialVersionUID = 1L; 17 18 19 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 20 doGet(request, response); 21 } 22 23 24 /** 25 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 26 */ 27 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 28 29 30 String name = request.getParameter("name"); 31 32 System.out.println(name); 33 34 request.setAttribute("name", name); 35 36 request.getRequestDispatcher("/jsp/memo_value_send.jsp").forward(request, response); 37 } 38 39} 40

ServletReceive.java

1 2 3import java.io.IOException; 4 5import javax.servlet.ServletException; 6import javax.servlet.annotation.WebServlet; 7import javax.servlet.http.HttpServlet; 8import javax.servlet.http.HttpServletRequest; 9import javax.servlet.http.HttpServletResponse; 10 11/** 12 * Servlet implementation class GetServletTest 13 */ 14@WebServlet("/ServletReceive") 15public class GetServletTest extends HttpServlet { 16 private static final long serialVersionUID = 1L; 17 18 19 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 20 21 doGet(request, response); 22 } 23 24 25 /** 26 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 27 */ 28 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 29 30 String s = request.getParameter("entryName"); 31 32 System.out.println(s); 33 34 request.setAttribute("name", s); 35 36 request.getRequestDispatcher("/jsp/memo_value_get.jsp").forward(request, response); 37 } 38 39 40 41} 42

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

hoge.jsp

1<td> 2 <input type="hidden" name ="entryName"> 3 <a href="#" onclick=sendTo(<%=request.getAttribute("name") %>)><%=request.getAttribute("name")%></a> 4</td>

この部分を

<td><input type="hidden" name="entryName"> <a href="#" onclick="javascript:void(0); document.linkName.entryName.value='<%=request.getAttribute("name")%>';document.linkName.submit();"><%=request.getAttribute("name")%></a> </td>

このように変更することで解決しました。

投稿2022/07/15 04:44

slfjlkjf

総合スコア32

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問