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

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

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

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

onclick

onclickとはユーザーのクリック処理を指します。これは"onmousedown"(押下)と"onmouseup"(押上)の二つの事象の組み合わせです

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

31940閲覧

JSPにおいてaタグのonclickでformのリンクをsubmitしたい

Sfidante

総合スコア90

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

onclick

onclickとはユーザーのクリック処理を指します。これは"onmousedown"(押下)と"onmouseup"(押上)の二つの事象の組み合わせです

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2015/07/28 15:32

編集2015/07/29 03:09

現在、Javaでfacebookアプリを開発しているのですが、
下記のエラーが出てしまい原因がわからず困っています。

jsp

1<a href="" onclick="document.form.submit();return false;"> 2</a>

上記のonclickのsubmitによって

jsp

1<form action="リンク先" method="POST" name="form"> 2</form>

のリンク先にアクセスしたいのですが、
2つの不具合によりリンク先に飛べません。

下記に問題のページの実際のコードを記載いたします。

jsp

1<form action="YourSelectEngineer?MatchingDetailEngineer" method="POST" name="blueForm<c:out value='${ loop.count }'/>"> 2 <input type="hidden" name="switch" value="MatchingDetailEngineer"> 3 <input type="hidden" name="engineerid" value="${ engineerlist.engineerid }"> 4 <input type="submit" name="sbt<c:out value='${ loop.count }'/>" value="送信" style="visibility:hidden"> 5 </form> 6 <a href="" class="list" onclick="document.blueForm<c:out value='${ loop.count }'/>.sbt<c:out value='${ loop.count }'/>.click();"><!-- リスト --> 7 <div class="row p-profile_box_blue c-box_padding20"> 8 <div class="layout-box"> 9 <div class="layout-box_left c-center"> 10 <figure> 11 <div class="c-photobox"> 12 <img src="${ engineerlist.photo }?width=120&height=120" class="img-circle c-photo"> 13 </div> 14 </figure> 15 <div class="c-name"> 16 <p>${ engineerlist.name }(${ engineerlist.age })</p> 17 </div> 18 </div> 19 <div class="layout-box_right"> 20 <nav class="c-position"> 21 <ul class="nav nav-stacked"> 22 <li class="c-matchingbox_info"> 23 <img src="image/position.png" class="c-mini_logo" style="float:left"> 24 <ul class="nav" style="float:left"> 25 <c:if test="${ engineerlist.projectmanager == true }" var="projectmanager"/> 26 <li><c:if test="${projectmanager}">プロジェクトマネージャー<br></c:if><c:if test="${!projectmanager}"></c:if></li> 27 <c:if test="${ engineerlist.projectleader == true }" var="projectleader"/> 28 <li><c:if test="${projectleader}">プロジェクトリーダー<br></c:if><c:if test="${!projectleader}"></c:if></li> 29 <c:if test="${ engineerlist.engineer == true }" var="engineer"/> 30 <li><c:if test="${engineer}">システムエンジニア<br></c:if><c:if test="${!engineer}"></c:if></li> 31 <c:if test="${ engineerlist.programer == true }" var="programer"/> 32 <li><c:if test="${programer}">プログラマー<br></c:if><c:if test="${!programer}"></c:if></li> 33 <c:if test="${ engineerlist.director == true }" var="director"/> 34 <li><c:if test="${director}">ディレクター<br></c:if><c:if test="${!director}"></c:if></li> 35 <c:if test="${ engineerlist.coder == true }" var="coder"/> 36 <li><c:if test="${coder}">コーダー<br></c:if><c:if test="${!coder}"></c:if></li> 37 <c:if test="${ engineerlist.designer == true }" var="designer"/> 38 <li><c:if test="${designer}">デザイナー<br></c:if><c:if test="${!designer}"></c:if></li> 39 <c:if test="${ engineerlist.tester == true }" var="tester"/> 40 <li><c:if test="${tester}">テスター<br></c:if><c:if test="${!tester}"></c:if></li> 41 </ul> 42 </li> 43 <li class="c-matchingbox_info"> 44 <img src="image/duration.png" class="c-mini_logo_year"> 45 ${ engineerlist.years_of_experience }年 46 </li> 47 <li class="c-matchingbox_info c-list-pr_textover"> 48 <img src="image/miniindustry_logo.png" class="c-mini_logo_pr"> 49 <div class="c-miniprbox"> 50 ${ engineerlist.introduction } 51 </div> 52 </li> 53 </ul> 54 </nav> 55 </div> 56 </div> 57 </div> 58 </a>

本来であれば、aタグで囲まれた箇所にカーソルを合わせれば、
プロジェクト名/YourSelectEngineer?MatchingDetailEngineer
との記載がされてリンク先に飛べると思うのですが、
ページの上部に移動するだけでリンク先にアクセスできません。

同じページでこの現象とは別にもうひとつの現象が起こります。
その現象はfacebookのaccessTokenを用いて、
セッション管理のもと、このページにアクセスしてきた際に起こります。
accessTokenを使っているJavaのコードの一部を下記に示します。

Java

1HttpSession ses = request.getSession(true); 2 3 long fbid = Long.parseLong(map.get("userId")); 4 EntryDao entrydao = new EntryDao(); 5 try{ 6 //新規登録時の処理 7 entrydao.connect(); 8 entrydao.insertAccount(beans);//エラーを返したら登録済み 9 int userid = entrydao.selectUserID(fbid).getUserid(); 10 ses.setAttribute("userid", userid); 11 entrydao.close(); 12 response.sendRedirect("tos.html"); 13 }catch(Exception ex){ 14 ex.printStackTrace(); 15 //insert出来なかったときのException内容 16 try{ 17 //ログイン済みであるからfbidよりuseridの取得 18 //メインページに移動する 19 //クライアントとしてログイン時 20 int userid = entrydao.selectUserID(fbid).getUserid(); 21 ses.setAttribute("userid", userid); 22 int clientid = entrydao.selectClientID(userid).getClientid(); 23 ses.setAttribute("clientid", clientid); 24 ClientProfileDao clientdao = new ClientProfileDao(); 25 clientdao.connect(); 26 clientdao.selectClientProfile(clientid); 27 clientdao.close(); 28 entrydao.close(); 29 request.getRequestDispatcher("SearchEngineerList?page=1").forward(request, response); 30 }catch(Exception e){ 31 e.printStackTrace();

これで、先ほどのページにアクセスした直後にaタグで囲まれた部分にカーソルを合わせると、
「上記のクラス?アクセストークン」
といった形でURLに表示されて、クリックすると、

java

1HTTPステータス 500 - Server returned HTTP response code: 400 for URL:

のエラーが出てしまいます。

原因が全くわからず困り果てています。
同じような形式のページ全てで同じ現象が起こります。
何卒よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

<a href="" class="list" onclick="document.blueForm.submit();"> を <a href="#" class="list" onclick="document.blueForm.submit();"> <a href="#dummy" class="list" onclick="document.blueForm.submit();"> <a href="javascript:;" class="list" onclick="document.blueForm.submit();"> <a href="javascript:void(0);" class="list" onclick="document.blueForm.submit();"> <a href="javascript:void(0);" class="list" onclick="document.blueForm.submit(); return false;"> などでためしてみてください。

後、action="YourSelectEngineer?MatchingDetailEngineer"の?以降の形式がおかしくないですか。
=で値をセットしないのなら?以降は不要です。

投稿2015/07/28 23:57

chiku_

総合スコア1464

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

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

Sfidante

2015/07/29 00:38

ご回答ありがとう御座います。 結果を申し上げますと、 どれもうまくいきませんでした。 >action="YourSelectEngineer?MatchingDetailEngineer"の?以降の形式がおかしくないですか。 >=で値をセットしないのなら?以降は不要です。 申し訳ありません。 ここは間違えです。 action="YourSelectEngineer?switch=MatchingDetailEngineer"とう形です。
chiku_

2015/07/29 00:57

サーバーに一切リクエストがいっていないのであれば、html上の問題と思われます。 formは入れ子にされていないですよね? またaリンクでの囲みがうまくいっていない事はないですか? divを囲まないようにして普通にリンク文字にした時でも動作しませんか? 後はformにinput submitのボタンを不可視属性で持って、aリンクからsubmitボタンのclickを呼ぶようにするような代替策が考えられます。
Sfidante

2015/07/29 02:13

ご返答ありがとうございます。 >formは入れ子にされていないですよね? formの入れ子はないようです。 >またaリンクでの囲みがうまくいっていない事はないですか? >divを囲まないようにして普通にリンク文字にした時でも動作しませんか? divを囲んでいたので、試しに<a href="">リンク</a>のようにいたしましたが、うまく行きませんでした。 >後はformにinput submitのボタンを不可視属性で持って、 >aリンクからsubmitボタンのclickを呼ぶようにするような代替策が考えられます。 追記のようにコードを変えてみましたが、結果は変わりませんでした。 それと、JSPのソースコードに記載していないのですが、 このページでは、Listにある要素をforEach文で出力しております。 そのため、同じnameのformタグがいくつも生成されていると思います。 それが原因でうまくいかないのだと考えられます。 また、<input type="submit”>にすることでうまくいっています。
chiku_

2015/07/29 02:26

> このページでは、Listにある要素をforEach文で出力しております。 > そのため、同じnameのformタグがいくつも生成されていると思います。 jspでformのnameにインデックス値などを付与し、aのonclickもインデックス値が付与されたform名にしてみてください。 > また、<input type="submit”>にすることでうまくいっています。 上記でうまくいくなら >後はformにinput submitのボタンを不可視属性で持って、 >aリンクからsubmitボタンのclickを呼ぶようにするような代替策が考えられます。 もうまくいくはずです。submitボタンのid名などが重複されてないでしょうか?submitボタンのクリック処理自体がされていないのではないかと思われます。
Sfidante

2015/07/29 03:10

>jspでformのnameにインデックス値などを付与し、 >aのonclickもインデックス値が付与されたform名にしてみてください。 >submitボタンのid名などが重複されてないでしょうか? >submitボタンのクリック処理自体がされていないのではないかと思われます。 http://homepage1.nifty.com/kodayan/javasc/form/submit07.htm 上記のページを参考にさせていただき、 ソースコードを改変いたしました。 現状うまくいかないのいですが、 ソースコードに誤りがあるのでしょうか? よろしくお願いいたします。
chiku_

2015/07/29 04:18

href="javascript:;"でやってみてください。 こちらで同様のhtml構成で試してみた所、いきました。
Sfidante

2015/07/29 04:34

ありがとうございます。 javascript:; にしたところ、うまくいきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問