• 締切済み

SA Strutsのエラー表示について

JAVA初心者です。 SA Strutsでのバリデーションエラーについて質問させて頂きます。 ある項目をマスタに存在しない場合にエラーメッセージと エラーになった項目の色を変えたいのですが、 メッセージは、「ActionMessages」で取得して表示できました。 エラーになった項目の色を変えるには、独自Validatorを作らないと行けないでしょうか? 何卒、ご教授をお願いします。 以下ソースです。 ■serch.action @Execute(validator = false) public String submit(){ ActionMessages messages = new ActionMessages(); /* キーからメッセージ取得 */ message = MessageResourcesUtil.getMessage("ERR0001"); /* 分類マスタに存在するかチェック */ categlycheck = modelCategly1Service.bunruichck(studyForm.bunrui); if ( categlycheck == false){ /* 分類マスタに存在しなければメッセージ表示 */ messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("ERR0001")); ActionMessagesUtil.addErrors(RequestUtil.getRequest(), messages); } return "index.jsp"; } ■index.jsp <html:errors/> <s:form > <table border="1"> <tr> <td>商品分類</td> <td> <html:text property="bunrui" errorStyleClass="err" /> </td> </tr> </table> <table> <tr> <input type="submit" name="submit" value="サブミット"></input> </tr> </table> </s:form> </body> </html>

  • Java
  • 回答数1
  • ありがとう数1

みんなの回答

回答No.1

こんばんわ! > エラーになった項目の色を変えるには、独自Validatorを作らないと行けないでしょうか? 独自というほどでもありませんが、ある程度は自分で実装が必要です。 例えば「エラーになった項目の色を変える」と言っても、 1.その色は?(#FF0000で真っ赤にしちゃう?) 2.場所は?(文字なの?枠なの?) 3.文字の場合は太さは? とか、人によって内容は異なりますよね? なので多少は自分で書いてあげる必要があるワケです。 html:errorsタグにはheaderとfooterが付けられます。 メッセージリソースに書いてあげれば、文字の色など変えてあげれます。 この辺りが参考になるでしょうか。 http://struts.wasureppoi.com/taglib/04_headder.html 例えば真っ赤な太字でエラーを出力するのであれば メッセージリソースに errors.prefix=<font color="red"><b> errors.suffix=</b></font> と書いてあげるだけでできます。 赤い太字にしたくなければ <html:errors prefix="false" suffix="false"/> とすればいつもの黒字が出力されます。 ガンバればページによって動的に内容を変更することもできます。 Strutsを使うのであれば便利な機能ですから、ぜひ活用してみてください。 特に指定しなければhtmlタグもエスケープされず出力されます。 余談ですが if ( categlycheck == false){ はバグの温床になりかねません。 通常if分岐(だけではないけど)にbooleanを用いる場合は 上記のようにせず、falseにしたいのであれば if(!categlycheck) { のようにします。 これはJavaに限らずプログラム全般の基本ですので抑えておきましょう!

hwhiro0309
質問者

お礼

お返事が遅くなりすみませんでした。 ありがとうございました。

関連するQ&A

  • struts の検索結果の表示

    struts で、入力された文字列を含むデータをJSPで表示させるものを作成したいと思っています。 検索結果を ArrayList の形式で持たせています。 結果の中身は、カンマ区切りで複数のデータが1レコードに含まれています。(こんな感じです・・・"東京,01,22,日本") その結果を、session.setAttribute("resultList", searchResult); ※searchResult==検索結果ArrayListの名前 の形でJSPに送り表示させたいのですが、JSP側でどのように記述すればうまく表示できるのかが不明です。 表示は、tableを使用して <table> <tr> <td>東京</td><td>01</td><td>22</td><td>日本</td> </tr> </table> のようにしたいです。 お分かりの方がいましたら、回答ください。

  • [PHP初心者] フォームのエラーチェック

    PHPやデータベースに全く疎い者です。 皆様にご指導頂きたく投稿致します。質問内容もレベルが低いですがどうが宜しくお願いします。 メールフォームにてフォームのボタンを押下し、 エラーチェックをして、エラー項目を同一画面上の上の辺りに表示させたいのですが、、参考書を読んだり、過去スレを拝見しても、どうもわかりません。 <body> //↓この辺をどう書けばいいのか、さっぱりなんです。 <?php if(isset($_POST['mailform'])) { if($_POST['name'] == "") { echo("名前を入力して下さい。<br>"); }} ?> //↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ <form method="POST" action="kakunin.php"> <table border="0" cellpadding="5"> <tr> <td colspan="2"></td> </tr> <tr> <td>名前</td> <td><input type="text" name="name" size="20"></td> </tr> <tr> <td>メールアドレス</td> <td><input name="mail" type="text" id="mail" size="20"></td> </tr> <tr> <td>項目</td> <td>     <input type="checkbox" name="check[]" value="PHP">PHP <input type="checkbox" name="check[]" value="Perl">Perl <input type="checkbox" name="check[]" value="ASP">ASP <input type="checkbox" name="check[]" value="JSP">JSP</td> </tr> <tr> <td>お問い合わせ内容</td> <td><textarea rows="5" name="naiyou" cols="40"></textarea></td> </tr> <tr> <td colspan="2"><input name="mailform" type="submit" id="mailform" value="::入力内容を確認::">  <input type="reset" name="Submit" value="リセット"></td> </tr> </table> </form> </body>

    • 締切済み
    • PHP
  • jspでのArrayListの値の表示

    jsp上でBeanで以下のように設定されている ArrayList<ArrayList<Integer>> a; a.add(new ArrayList<Integer>); a.add(new ArrayList<Integer>); a.add(new ArrayList<Integer>); a.get(0).add(0); a.get(0).add(1); a.get(1).add(2); a.get(1).add(3); a.get(1).add(4); a.get(1).add(5); a.get(2).add(6); a.get(2).add(7); a.get(2).add(8); aのような行と列が不定のArrayListの全ての値をjspの画面上に  値 値 値  0  2  6  1  3  7    4  8    5 といったようにテーブルで表示したいのですがjspにどのような既述をすればよいでしょうか? クリックしたときの処理などの導入や項目を増やすなど拡張する場合があるので 以下のような形とレイアウトが同じようになると望ましいです <td> <table> <tr>値</tr> <tr>0</tr> <tr>1</tr> <tr>2</tr> </table> </td> <td> <table> <tr>値</tr> <tr>3</tr> <tr>4</tr> <tr>5</tr> </table> </td> <td> <table> <tr>値</tr> <tr>6</tr> <tr>7</tr> <tr>8</tr> </table> </td>

  • strutsのstruts-config.xmlでのエラーメッセージ

    こんばんは strutsのエラーメッセージ表示で困っています。 javaでthrowしてstruts-config.xmlのexceptionで エラーを表示します。 以下のようにコーディングしてあり、 key999に定義してあるメッセージを表示することはできます。 しかしmessagesにセットしたメッセージを表示することができません。 messagesにセットしたメッセージを表示するにはstruts-config.xmlの keyはどのように設定すればよいのでしょうか? よろしくお願いします。 *struts-config.xml <exception key="999" type="myException" path="xxxxxxxxxx.jsp" handler="myExceptionHandler"/> *java public ActionForward hoge( ActionMapping map, ActionForm form, HttpServletRequest req, HttpServletResponse res ) throws Exception { try { return map.findForward("XXXXX"); } catch (myException e) { ActionMessages messages = new ActionMessages(); messages.add("error" ,new ActionMessage("001","エラー")); saveMessages(req,messages); throw e; } }

  • 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 への画面からの入力値を参照することは、無理なのでしょうか?

    • ベストアンサー
    • Java
  • JSPで個人データを入力、出力

    <html> <head><title>Costomer</head></title> <body bgcolor="white"> <div align="center"> <%@ include file="header.html"%> <form method="POST"action="customer.jsp"> <TABLE> <TR> <TD>Name</TD> <TD><input type="text" name="name"></TD> </TR><br> <TR> <TD>Mail Address</TD> <TD><input type="text" name="mail address"></TD> </TR><br> <TR> <TD>TEL No</TD> <TD><input type="text" name="tel no"></TD> </TR><br> </TABLE> <br> <input type="submit"value="Submit"> <input type="reset"value="Cancel"> </form> <jsp:include page="post-response.jsp" flush ="true" /> <%@ include file="copyright.html"%> </div> </body> </html> …………………………………………………………………………………… <html> <head><title>Post-Response</head></title> <body bgcolor="white"> <div align="center"> <TABLE BORDER="1"> <TR> <TD>Name</TD> <TD></TD> </TR><br> <TR> <TD>Mail Address</TD> <TD></TD> </TR><br> <TR> <TD>TEL No</TD> <TD></TD> </TR><br> </TABLE> <form method="GET"action="customer.jsp"> <input type="reset"value="Clear"> <br> </form> </div> </body> </html> …………………………………………………………………………………… 上のcustomer.jspにName,Mail Adress,Tel no,を入力し、打ち込んだものを下のpost-response.jspに出力したいのですがどのように出力したらよいのかわかりません!何度やってもエラーが出てしまいます。 教えてください!!お願いします! ・上のcustomer.jsp内の<%@ include file="header.html"%>と<%@ include file="copyright.html"%>無視してください!

  • JSFのmessagesタグによる、エラー表示順序

    Validatorや、その他必須チェック等、エラー発生時にJSFのmessagesタグを使って画面にエラーを表示させています。複数エラーが発生する時、入力項目順に(画面表示項目の上から下へ向かって)エラー項目を出力させたいのですが、順不同で出力されてしまいます。messagesのオプション等でエラーの順序を制御できないでしょうか?

    • ベストアンサー
    • Java
  • jQuery.cloneのsubmitについて

    PG初心者です。 ご意見を頂きたく発言しました。 Windows、JSPで開発しています。 jQueryを使って[追加]ボタンクリック時に<table>の<tr>をcloneしています。 ※cloneした<tr>に含まれるオブジェクト ( id , name ) は、そのタイミングで一意になるように変更しています。 ここまでは、問題なく処理できるのですが、 この後、cloneしたオブジェクトをsubmitすると、送れないんです...受け取れないんです。 submit処理の内容としては、 ※08~11がcloneで追加した<tr>です。 --------------------------------------- 01:<form id='f' method='POST' action='syori.jsp'> 02:<table> 03:<tbody> 04:<tr> 05: <td id='r1cd' name='r1cd'>123</td> 06: <td id='r1nm' name='r1nm'>あいうえお</td> 07:</tr> 08:<tr> 09: <td id='r2cd' name='r2cd'>456</td> 10: <td id='r2nm' name='r2nm'>かきくけこ</td> 11:</tr> 12:</tbody> 13:</table> 14:</form> --------------------------------------- $("#f").submit(); とすると、( r1cd ) と ( r1nm ) しか送られないんです。 何故なんでしょうか??? ちなみに、他にもJSPファイル作成(画面表示)時に、 オブジェクトを append しているのですが、 そのオブジェクトは正常にPOSTされるんです... 違いといえば、JSP作成時に作っているか、 画面表示後、動的に作っているかという違いなのですが...よくわかりません。 イベント自体であれば、live などを用いれば動きますが、 form内のオブジェクトを増減したことによって、 何か処理の記述が異なるんでしょうか? 大変困っております、何卒教えて頂けますか?

    • ベストアンサー
    • Java
  • Java Struts ~に対するゲッターメソッドがありません

    Java Struts WindowsXp Java Struts共に初心者です。 上記を使用してログイン画面を作成しています。 エラーが発生しているのですが 「Bean LoginFrm のプロパティ id に対するゲッターメソッドがありません」 と言われます。 参考サイトはいくつもあるのですが、そもそもイテレータを使用していないとか私の状況に一致する回答を見つけることができませんでした。 (JAVA、Struts共に慣れていないためか応用がきかないみたいです) loginTop.jsp login.jsp LoginFrm.java LoginAct.java struts-config.xml のいずれかが原因だとは思うのですが、そのどこかが皆目見当もつきません。 loginTop.jsp----------------------------- <html:form action="/login"> <table border="0"> <tr><td> ログインID<html:text name="LoginFrm" property="id" size="6" maxlength="5" /> </td></tr> <tr><td> パスワード<html:password name="LoginFrm" property="pass" size="6" maxlength="5" /> </td></tr> </table> </html:form> login.jsp---------------------- <html:form action="/login"> <table border="0"> <tr><td> A:<bean:write name="LoginFrm" property="id" /> </td></tr> <tr><td> B:<bean:write name="LoginFrm" property="pass" /> </td></tr> </table> </html:form> LoginFrm.java---------------------- private String id; private String pass; public String getID() { return id; } public void setID(String id) { this.id = id; } public String getPass() { return pass; } public void setPass(String pass) { this.pass = pass; } LoginAct.java-------------------- throws Exception { request.setCharacterEncoding("Windows-31J"); LoginFrm logFrm = (LoginFrm) form; log.info(" user = "+logFrm.getID()); log.info(" user = "+logFrm.getPass()); return mapping.findForward("login"); } struts-config.xml--------------------------- <form-beans> <form-bean name="LoginFrm" type="loginForm.LoginFrm" /> </form-beans> ~ <action attribute="LoginFrm" input="/pages/loginTop.jsp" name="LoginFrm" path="/login" type="loginAction.LoginAct" scope="request" validate="true"> <forward name="login" path="/pages/login.jsp" /> </action> 以上です。 かなり長くなり申し訳ありません。

    • ベストアンサー
    • Java
  • フォームで確認画面を表示させるにはどうすればいいのでしょうか?

    質問をご覧下さりありがとうございます。 <form action="18add.php" method="POST" name="form1"> <table> <tr> <th>番号(半角数字)</th> <td><input type="text" name="number" value=""></td> </tr> <tr> <th>名前</th> <td><input type="text" name="name" value=""></td> </tr> <tr> <td><input type="hidden" name="mode" value="add"></td> <td><input type="submit" name="submit" value="追加"></td> </tr> </table> </form> htmlでこんなフォームを作り、phpで $table_body = ""; if( isset( $_POST['mode'] ) ){ $mode = $_POST['mode']; $number = $_POST['number']; $name =$_POST['name']; } else{ $mode = ""; $number = ""; $name = ""; } if( $mode == "add" ){ $table_body .= "<tr>"; $table_body .= "<td>"; $table_body .= $number; $table_body .= "</td>"; $table_body .= "<td>"; $table_body .= mb_convert_encoding( $name, "SJIS", "EUC-JP" ); $table_body .= "</td>"; $table_body .= "</tr>"; } で一度入力された情報を確認する画面を作りたいのですが うまくいきません。 初心者なのでわかりやすく説明をつけてくださると大変助かります。

    • 締切済み
    • PHP