ベストアンサー ※ ChatGPTを利用し、要約された質問です(原文:【Struts】html:linkについて) 【Struts】html:linkについて 2009/02/07 01:47 このQ&Aのポイント 【Struts】html:linkについて「html:link」でActionFormに値を格納する方法や、動的な値を次画面に飛ばす方法について考えます。JavaScriptを使用してsubmitさせる方法もありますが、できればformに格納したいです。 【Struts】html:linkについて 「html:link」でActionFormに値を格納するというような、 「html:form」的な動きはできるでしょうか。 「html:link action="/hoge?id=xxx¶m=<% ooo %>&..."」 今は上記のような形で、値を固定したり変数に入れたりして requestで次画面へ値を飛ばすようにしていますが、 「html:text」など値が動的になってくると「?」では 厳しくなります。 動的な値を次画面へ飛ばせればどんな方法でも良いのですが、 できればformに格納したいのでなにか方法はないでしょうか? やはりJavaScriptでsubmitさせる感じになってしまうのでしょうか? 質問の原文を閉じる 質問の原文を表示する みんなの回答 (1) 専門家の回答 質問者が選んだベストアンサー ベストアンサー 神崎 渉瑠(@taloo) ベストアンサー率44% (1016/2280) 2009/02/07 06:28 回答No.1 JavaScriptでもできますが、Javaを使ってるならJavaだけで完結させる方が良いのでは? action="/hoge?<% allparams %>¶m=<% ooo %>" としておいて、 変数allparamsに好きな文字列を入れれば良いと思います。 質問者 お礼 2009/02/07 11:37 回答ありがとうございます!! なるほど、そういう飛ばし方あったんですね! 勉強になります。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 カテゴリ [技術者向] コンピュータープログラミング・開発HTML 関連するQ&A struts ActionFormについて こんばんわ。 ActionFormをMapに変換する方法はあるのでしょうか。 実現したいことは、リダイレクトした際にフォームの値を保持したいのですが ActionFormに格納されている値を簡単にループで設定することは無理でしょうか。 よろしくお願いします。 if (forward != null && forward.getRedirect()) { ActionRedirect redirect = new ActionRedirect(forward); // 本当はここにActionFormに格納している値を設定したい。 redirect.addParameter("param1","value1"); redirect.addParameter("param2","2"); redirect.addParameter("param3","3.0"); forward = redirect; } テキストボックスで入力したデータを変数に入れてリンクで飛ばせる? Struts + JSPで DynaValidatorFormに格納した値を <html:text property="id" size="10" maxlength="8" /> <html:text property="name" size="80" maxlength="50" /> こんな感じでhtml:textとかで取り出すと思いますが、 次画面に遷移する際、html:textにユーザーが入力した値を 変数に入れる方法ってないでしょうか? リンクで画面遷移するときに値をもたせたいので html:formではなく くhtml:link action="/hoge?<% id %>&<% name %>..." /> こんな感じでやりたいのです。 良い方法はあるでしょうか? strutsのhtml:linkの使い方 html:linkを使用してJSPを表示した際に、前のフォームのプロパティ値(ここではstaffNumberの値)を取得したいのですが,うまくいきません。 同じ処理をhtml:submitで実行すると取得できています。 その違いを教えて頂きたいのです。 以下がそのコードです。 【struts-config】 <form-bean dynamic="true" name= "loginForm" type="org.apache.struts.validator.DynaValidatorForm"> <form-property name = "staffNumber" type= "java.lang.String" /> </form-bean> <action name="loginForm" path="/login" scope="request" type="login.action.LoginAction" validate="false"> <forward name="success" path="/login.jsp" /> </action> 【login.jsp】 <html:form action="/login"> <html:text property="staffNumber" size="10"maxlength="8"/> <html:link action="/login">testlink</html:link> <html:submit value="test"/> </html:form> 【LoginAction】 public class LoginAction extends Action{ public ActionForward execute (ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse res) throws Exception{ DynaValidatorForm loginForm =(DynaValidatorForm) form; String staffNumber=(String)loginForm.get("staffNumber"); System.out.println(staffNumber); return (mapping.findForward("success")); } } linkの処理で同じJSPを表示していますが,前のプロパティ値を取得しているかをログで確認する事を優先しているのでそのようにしています。 質問の意味がわからない、ソースの不足等ありましたら御指摘下さい。 宜しくお願いします。 ネットワークエンジニアとは?技術職の未来を考える OKWAVE コラム StrutsのFormについて 現在Struts(1.2)にてプログラムしているのですが、 分からない点があります。 とりあえず入力画面と入力画面表示時に必要なデータを取得してくる Actionクラスを作りました。 必要なデータとは、セレクトボックスの値でDBから取得しております。 で、取得したデータをActionクラスのexcute()が呼ばれたタイミングで、ActionFormの生成を(new)してそれにDBから取得した値をいれて 最後にrequest.setAttribute()で設定しています。 これは間違いでしょうか? というのも、Actionクラスのexcute()のところで、 request.getAttribute("XXXform",xxForm)としてやると、 Formが取得できます。本来はこのFormに設定するべきなのでしょうか? request.setAttribute()をしていないのにFormがあることに混乱しております。 単にstruts-config.xmlでFormの定義をしたら勝手に作成される ものなのでしょうか? なんだか言ってることが分からなくなってきた、、 言いたいことをまとめると、、 今は入力画面初期表示のために自分でActionFormをexecute()の はじめでNEWしてそれにデータをいれてrquestに設定しているが、 本来は既にrquestにあるFormをgetしてそれにデータをいれて再度、 rquestに設定するのが正しいのかどうかです。 宜しくお願いします。 struts:input type="text"とhtml:textの違いは? はじめまして。 strutsのhtmlタグで質問があります。 Formの中にvalidateを実装しました。 画面にエラーメッセージを表示するまではうまくいきましたが、 遷移前に入力した値を保持し再度表示してくれません。 原因を調べてみると、 <input type="text" name="hoge"> ではなく、 <html:text property="hoge"/> ならば値を保持してくれることがわかりました。 ここで質問なのですが、 (1)strutsでは、値の保持のため<html:text~>を使うのが妥当なのか? (2)strutsで<input type="text"~>を使用する場合、どういう実装をすれば値をjspに渡せるのか? (sessionに格納するのはなんとなくわかります。ですが、strutsの場合、ActionとFormだけで動作しますし、通常のsetAttribute("hoge","value");をどこで入れるのが適切なのかわかりませんでした。 初心者な問題で申し訳ありませんが、strutsをより理解したいため、お分かりになる方教えていただけないでしょうか?よろしくお願いします。 エラーページ遷移後に入力値を残す いつも参考にさせて頂いています。 strutsでアプリを作っています。 入力チェックをして不備があるとstrutsの<html:erros />タグにてエラーメッセージを表示しているのですが、その際に入力した値を残す処理ができなくて困っています。 私が思っていたのはrequestスコープにActionFormの値を設定すればいいのかな?と思っていたのですがうまくいきません。 (画面遷移、エラーメッセージ表示はできていますが、入力された値は消えてしまいます) 以下にソースの載せますのでご教授宜しくお願いします。 ■postでリクエストを投げるjsp <form action…> <input type="text" name="requestDto.nameKanji"> </form> ■値を取得したサーブレット //パラメータをアクションフォームから取得 TestActionForm actionForm = (TestActionForm)form; ActionMessages messages = new ActionMessages(); // 入力チェック inputCheck(actionForm, messages); // エラー処理 if(messages.size() != 0) { saveErrors(request, messages); ActionForm form = new ActionForm(); form.setRequestDto(actionForm.getRequestDto) // ここでアクションフォームをリクエストスコープに設定 request.setAttribute("ActionForm ", form); return ( mapping.findForward("error") ); } リクエストスコープに入れる名前、もしくは値が間違っているのでしょうか? どうか宜しくお願いします。 開発環境 jdk1.4_12 tomcat5.0 struts1.2 formによるパラメータ送信がうまくいきません こんばんは。 HTML初心者です。 formによるパラメータを送信しようと考えているのですが、 送信方法によってパラメータが異なってしまい、困っています・・・。 以下のようなformを使って、パラメータをpostしています。 <form name="form1" action="http://xxx/xxx/xxx" method="post"> <input type="text" name="text1"> <input type="submit" value="sousin" name="submit1"> </form> 送信してみたところ、送信方法によって、送るパラメータに差異があることに気が付きました。 ************************************************** 1.テキストに文字列を入れて、送信ボタン(sousin)を押す。 ->リクエストパラメータが、submit1=sousin と text1=文字列 になる。 2.テキストに文字を入れて、フォーカスがテキストにある状態で、Enterを押す。 -> リクエストパラメータが、text1=文字列 だけになる。 ************************************************** 1.と2.どちらの場合でも、 submit1=sousin と text1=文字列 を送りたいと考えています。 クエリストリングは使いたくないので、 onclickをつけてみたり、JavaScriptで少し考えてみましたが、 どうしてもうまくいきませんでした・・・。 2.のように、Enterを押したときでも、 submit1=sousinを送るようにするのはどうしたらよいでしょうか?? 宜しくお願い致します。 PHPでFORMから来る変数名を変数にするには PHPでFORMから来る変数名を変数にするにはどうしたらよろしいでしょうか? 可変変数など調べたのですが、値を変数にすることは出来ても変数名を変数にする事は難しいようです。 <form action="reg.php"> <input type = "text" name = "comment"> <input type = "submit"> </form> このform内のnameが動的に変わるプログラムで,reg.phpにおいて名前(今ならcomment)を変数に格納したいと思っています。 reg.php 本来なら $comment = _REQUEST['comment']; とすると思うのですが、commentが動的に変動する場合、_REQUEST内をどう書き換えれば良いかが分からず困っています $dynamic_name = _REQUEST['ここをどう書けばよいでしょうか'] このことを考えてから今はform内ですが、formでなくてもどうやって書いてよいか分からず疑問に思いました 例えば $test = 'abc'; としたとき $test_name にtestという文字列を入れたい場合(つまりabcの変数名)どうやって入れたらよいのでしょうか?(もちろんtestと言う名前は動的に変わります) 詳しい方いらっしゃいましたらご回答いただければと思います。 良いアドバイスございましたら教えてください よろしくお願いします Java struts プルダウン JAVAでプルダウンを作成しています。 しかしプルダウンの値を設定し、submitを掛けると全ての行のプルダウンの値が同じになってしまいます。 100円 200円 でsubmitを掛けると 200円 200円 になってしまう。 <logic:iterate id="element" name="ActionForm" property="GridList" indexId="idx"> <html:select name="ActionForm" property="selectData" style="margin-left:10px;"> <html:optionsCollection name="element" property="DropDownList" label="label" value="value" /> </html:select> </logic:iterate> selectDataはStringの配列です。 DropDownListにはlabelとvalueのプロパティを持ったBeanを格納しています。 selectDataには「100-150-1日」というハイフン区切りのデータが格納されます。 どこが問題かわかりませんでしょうか。 strutsで画面遷移 お世話になります。struts初心者です。 test1.jspから、リンクをクリックしたら、次のページ(download.jsp)へ遷移させたいのですが、「ページが見つかりません」となってしまいます。 以下のようなソースコードにしています。 どこがおかしいのでしょうか・・・・情報少ないでしょうか。わかる方いらっしゃいましたら、おしえてください。 https://xxxxx/test/test1.jsp ↓リンククリックで下記URLになり「ページが見つかりません」 https://xxxxx/login/menu.do ------------------------------------------------------- test1.jsp ------------------------------------------------------- <html:html> <head> <script language="JavaScript"> <!-- function gonext(){ document.menuForm.menuOperation.value ="download"; document.menuForm.submit(); } --> </script> </head> <body> <html:form action="/login/menu"> <html:hidden property="menuOperation"/> <A href="javascript:gonext()"> go next </A> </html:form> </body> </html:html> ------------------------------------------------------- struts-config.xml ------------------------------------------------------- <form-beans> <form-bean name="menuForm" type="xxx.login.CMenuActionForm"/> </form-beans> <action-mappings> <action path="/login/menu" type="xxx.login.CMenuAction" name="menuForm" scope="request"> <forward name="download" path="/common/download.jsp"/> </action> </action-mappings> ------------------------------------------------------- CMenuAction.java ------------------------------------------------------- public class CMenuAction extends CxxxDLAction{ public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { return mapping.findForward("download"); } } ------------------------------------------------------- CMenuActionForm.java ------------------------------------------------------- public class CMenuActionForm extends ActionForm{ String menuOperation; public String getmenuOperation() { return menuOperation; } public void setmenuOperation(String menuOperation) { this.menuOperation = menuOperation; } } document.form.actionでの処理 以下のようなソースにて、 ・<form>のactionでは"send.php"へPOSTしたい。 ・javascriptにて、<select>で選択した値をhoge.phpへ渡したい 上記の事を実現するため、 ・リストから選んだ値を画像クリックで"hoge.php"へ渡し別窓で表示 ・"text"に入力した値をsubmitで"send.php"へ渡す といった処理をしているのですが、 "hoge.php"を参照した後に"text"へ何か入力してsubmitすると 本来send.phpへとぶはずが、"hoge.php"へとんでしまいます。 何が原因なのか、また最良を方法がありましたら ご教授頂ければと思います。 <script> <!-- function form_submit(url){ document.form.action=url; document.form.target = "_blank"; } //--> </script> | <FORM METHOD="POST" name="form" action="send.php"> <SELECT name="sel"> <OPTION value="001">001</OPTION> <OPTION value="002">002</OPTION> </SELECT> <input type="image" src="sub.gif" onClick="javascript:form_submit('hoge.php')"> <input type="text" name="text"> <input type="submit" value="送信"> </FORM> | FORM1つでリンク いつもお世話になっております。 既にある質問も調べてみたのですが <form name="top" method="post" action="xxx.cgi"> <input type = "hidden" name="data" value="open"> <a href="#" onClick="submit();">オープン</a> <input type = "hidden" name="data" value="close"> <a href="#" onClick="submit();">クローズ</a> </form> FORMを1つで、hrefのリンクみたいにして違う値を 送信したいのですが、上記だと 二つ目のリンクが上手く出来ません。 どなたかお知恵をお貸し下さい AIは使う人の年齢や市場にも影響する?人工知能の可能性 OKWAVE コラム リンクでPOST送信 http://www.kojikoji.net/pso/javascript.asp こちらにその方法がのっていて、 Windows IE 6.0 Windows Opera 7.13 では動作を確認しました。ですが、 Windwos Netscape 7.1 で動作しません。Netscapeにも対応した書き方で、<a href=...>を用いてPOST送信することは可能でしょうか? *****以下引用*********************************** リンクやボタンを使って「xxx.asp」へPOST送信 <html> <head> <script language="JavaScript"> <!-- function wPost(a1,a2){ document.form1.text1.value=a1; document.form1.text2.value=a2; document.form1.action = "xxx.asp"; document.form1.submit(); } //--> </script> </head> <body> <a href="javascript:wPost("text1","text2")">送信</a> <input type="button" OnClick="wPost('text3','text4')" value="送信"> <form name="form1" method="post" action="err.html"> <input type="hidden" name="text1"> <input type="hidden" name="text2"> </form> </body> </html> INPUT上でリターンを押してもsubmitされない方法 フォームにてキーワードを入力し、検索ボタン押したときに javascriptにて以下の動作をさせたいと思っています。 ・hidden項目に特定値をセットしてsubmitをかける 以下のコードを書いたのですが、INPUT上でリターンを押すと submitされてしまいます。 ボタン以外でリターンを押した場合に何も動作させないようにするにはどのようにすればよいのでしょうか? -------------------------------------------------------------- <SCRIPT language="JavaScript"> <!-- function javasc_name(param){ document.form.PARAM.value = param document.form.submit() } //--> </SCRIPT> <form method="POST" action="cgi-bin/xxx.exe"> <input type="text" name="KEYWORD"> <input type="hidden" name="PARAM"> <input type="button" value="検索" OnClick="javasc_name(10)"> </form> -------------------------------------------------------------- Struts html:linkのアンカータグ Struts html:linkを次のようにコードを作成していました。 <html:link href="index.jsp" paramId="jump_to" paramName="param" anchor="idss">中略</html:link> idssというのは、int idss にて変数です。当該ページに移動してリンクを実行すると、 http://localhost:8080/blog/index.jsp?jump_to=20#idssとなりidssの部分をintの値として実行したいにもかかわらず、idssの文字列として認識されてしまいます。 尚、anchorの部分をanchor="20"として、実行しますと正常に動作いたしました。 <A Name~の部分は間違いがないようです。anchor=idssとして、動作しようとすると、引用符が必要ですとエラーが出てしまいます。 idssを使用して、希望する動作を得るためには、どうすればよいのでしょうか。idssを使用しないとすれば、どうすればよいのでしょうか。 皆様のご意見、ご教授をお待ちしております。 宜しくお願い申しあげます リンクの値→サーブレット いつもお世話になっております。 今回もよろしくお願いいたします。 (1)jsp画面のリンクの値をServletへおくる (2)ServletでDBアクセスし、処理を行う (3)(2)で処理した値をBeanに格納する (4)jsp画面でBeanの値を取得する といった流れをしています。 [(1)のjspでのコード(一部)] <form name= henkou method="post" action="../servlet/RequestServSession"> <a href= "../henkou.jsp"> <input type=hidden name=MySubmit> <jsp:getProperty name="reqObject" property="id" /> </a> </form> <script language="JavaScript"> function func(MyCommand){ document.henkou.MySubmit.value=MyCommand; document.henkou.submit(); } </script> [(2)Servletのコード(一部)] String strId = (String)request.getParameter("MySubmit"); String strSesId = new String(strId.getBytes("iso-8859-1"),("Shift_JIS")); int intId = (Integer.parseInt(strId)); ・ ・ ・ //処理された値をBeanに格納 HttpSession session = request.getSession(); *1→session.setAttribute("id",sid); *2→session.setAttribute("name",name); *3→session.setAttribute("biko",biko); ・ ・ ・ などを実行すると、(4)では *1→ 0 *2→ null *3→ null が表示されます。 リンクの値がServletへきちんと送れていないのだと思い、jsp→Servletのみで実行したところ、 "Http-500エラー NullPointerException" が発生します。 どのようにしたらうまく値をおくることができるのでしょうか? どなたかご教授のほどよろしくお願いいたします。 フォームから受け取ったデータを変数に/PHP 入力フォームからデータを送信し、受け取ります。 <form action="index.php" method="post"> <input type="text" name="hoge"> <input type="submit"> </form> <?php echo htmlspecialchars($_POST['hoge']); ?> この時に受けったデータが、「りんご」だとして この「りんご」を変数にしたいです。 ↓ <?php $keyword = "りんご"; ?> このようにするには、 <form action="index.php" method="post"> <input type="text" name="hoge"> <input type="submit"> </form> <?php echo htmlspecialchars($_POST['hoge']); ?> の後にどのような処理をすればよいでしょうか? または初めから「$keyword」としてフォームからデータを送ることはできるのでしょうか? 何卒ご指導の程よろしくお願いします。 strutsでのlinkで質問があります こんにちは。 神奈川の大学生です。 学校でjavaを少し勉強しstrutsをやっています。 初心者ですが宜しくお願いします。 質問なんですがよくオークションなど検索をした時 該当35件あって 10件づつ表示できていて リンクが2 3 4 って出来ていて 2をクリックすると11件目~20件まで表示できる画面です。 そんな感じで作っていきたいんですけど、 jspで <html:link action="/*.do" property="rinks"> このような形でループさせて表示はできるのですが、 検索結果によって リンクの数字は増えたり減ったりするため acrion="*.do?xxxx=" + 変数(リンクの押された数字) のような形も違うみたいでした。 パラメータを渡す処理がサイトなど検索しても理解ができません。 値がわたればSELECT文で11~20までを条件を指定して表示できますので、 struts詳しい方方法を教えて下さい。 宜しくお願いします。 Strutsのindexedについてです <html:form action="syuu.do" method="post"> <logic:notEmpty name="page3form" property="csvkaku"> <logic:iterate id="kadai9ken" name="page3form" property="csvkaku"> <html:submit property="dispatch1" indexed="true" >修正</html:submit><br><html:submit property="dispatch2" indexed="true">削除</html:submit> </logic:iterate> </logic:notEmpty> このソースで削除ボタンを押すと削除処理Beanに値を保持遷移し(sakujo.java) 修正ボタンを押すと修正画面に値をBeanに保持し遷移する(senni.jsp) に各遷移していくシステムなのですが なぜか、画面表示時に修正ボタン削除ボタンどちらを押しても削除処理をしてしまうのです peropertyは、コンフィグのほうのparameterでしっかり遷移先は書いてあります。 どうしてでしょうか? Struts 1 で、複数件のフィールドを更新する方法を教えてください。 <head> <title>登録画面</title> </head> <body> <html:form action="/RegisterData"> ヘッダ:<html:text property="strHeader" /><br> <table border="0"> <logic:iterate id="objRecord" name="BIKO_FORM" property="objBikoList" indexId="intIndex"> <tr> <td>項目<%=(intIndex+1)%></td> <td><html:text name="objRecord" property="strBiko" indexed="true"/></td> </tr> </logic:iterate> <tr> <td colspan="2"><html:submit value="記録する" /></td> </tr> </table> </html:form> </body> このような JSP で、html:text に入力された値を再表示するプログラムを作ろうとしています。 表示は、 <head> <title>登録成功画面</title> </head> <body> <bean:write name="BIKO_FORM" property="strHeader" /> <table border="0"> <logic:iterate id="objRecord" name="BIKO_FORM" property="objBikoList" indexId="intIndex"> <tr> <td>項目<%=(intIndex+1)%>:<bean:write name="objRecord" property="strBiko" /></td> </tr> </logic:iterate> </table> </body> このような感じです。 ActionForm のプロパティは、 private String strHeader; private List<BikoFormDetail> objBikoList; です。 特にセッションに再登録したり、値を変更したりはしないのですが、うまく動作しないのです。iterater で表示した、html:text への画面からの入力値を参照することは、無理なのでしょうか? 注目のQ&A 「You」や「I」が入った曲といえば? Part2 結婚について考えていない大学生の彼氏について 関東の方に聞きたいです 大阪万博について 駅の清涼飲料水自販機 不倫の慰謝料の請求について 新型コロナウイルスがもたらした功績について教えて 旧姓を使う理由。 回復メディアの保存方法 好きな人を諦める方法 小諸市(長野県)在住でスキーやスノボをする方の用具 カテゴリ [技術者向] コンピューター プログラミング・開発 Microsoft ASPC・C++・C#CGIJavaJavaScriptPerlPHPVisual BasicHTMLXMLCSSFlashAJAXRubySwiftPythonパフォーマンス・チューニングオープンソース開発SEOスマートフォンアプリ開発その他(プログラミング・開発) カテゴリ一覧を見る OKWAVE コラム 突然のトラブル?プリンター・メール・LINE編 携帯料金を賢く見直す!格安SIMと端末選びのポイントは? 友達って必要?友情って何だろう 大震災時の現実とは?私たちができる備え 「結婚相談所は恥ずかしい」は時代遅れ!負け組の誤解と出会いの掴み方 あなたにピッタリな商品が見つかる! OKWAVE セレクト コスメ化粧品 化粧水・クレンジングなど 健康食品・サプリ コンブチャなど バス用品 入浴剤・アミノ酸シャンプーなど スマホアプリ マッチングアプリなど ヘアケア 白髪染めヘアカラーなど インターネット回線 プロバイダ、光回線など
お礼
回答ありがとうございます!! なるほど、そういう飛ばし方あったんですね! 勉強になります。