• 締切済み

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>

みんなの回答

回答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