2009-06-02 11 views
6

私はStrutsでログインページを作成しようとしています。アイデアは、ユーザーが存在するかどうかなどを検証し、エラーがある場合は、エラーのあるログインページ(通常のログインまたはフォームページの検証)に戻ります。<html:errors> strutsチュートリアルまたは例

誰かがStrutsのエラー管理チュートリアルを知っているかどうかを知りたいと思います。私は私の問題を解決するだろうと思う

<html:errors> 

タグのチュートリアル(または例)、のために特別に探しています。

答えて

10

ここで簡単なまとめです。あなたは、ActionFormクラスを持っているMyFormを言う:

<form-bean name="myForm" type="myapp.forms.MyForm"/> 

あなたはActionクラスを持って、MyActionを言う:

<action path="/insert" type="myapp.actions.MyAction" name="myForm" 
    input="/insert.jsp" validate="true" /> 
    <forward name="success" path="/insertDone.jsp"/> 
</action> 

"名前" アクションでは、フォームBean内の "名前" を指します。あなたが自動的に呼び出されますvalidate()メソッドを定義する必要がありますvalidate="true"あなたActionFormクラスMyFormを持っているので:

public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { 
    ActionErrors errors = new ActionErrors(); 
    if ((username==null) || (username.length() < 1)) 
     errors.add("username", new ActionError("error.username.required")); 
    return errors; 
} 

それは空のActionErrorsオブジェクトを返した場合は、Strutsのは、あなたのMyAction.executeを呼び出すために行きます()。それ以外の場合、Strutsは/insert.jspを表示します(これは入力したparmであるため)。html.errorsタグを展開してActionErrorsからエラーを表示します。

+0

ありがとう!数時間の仕事の後、私は最終的に私のフォームを検証することができました。最後に、私はアクションの代わりにbean内で検証を行い、validation.xml(minlenght、requiredなど)とデータベース検証(ユーザーは存在し、パスワードは正しい...)を使用しました。 ActionErrorsの ".add(String、ActionError)"の使用は、廃止予定(Struts 1.2.x)と ".add(String、ActionMessage)"という基本的に同じであるため変更しなければなりませんでした。 ご回答いただきありがとうございます。 – Tere

+0

@Mark Lutton:別のアクションからフォームが作成された場合(たとえば、ラジオボタンのラベル/値がDBから取得されてリクエストに入れられた場合など)、ラジオボタンをエラーとともにどのように表示することができますか?ラジオボタンを選択する必要がある場合)フォームを提出すると、私はそれらを表示することに成功しません(エラーのみが印刷されます)。 – Sefran2

14

ここに1つです: //struts.apache.org/1.3.5/struts-taglib/apidocs/org/apache/struts/taglib/html/package-summary.html#package_description

ここで私は」それはStrutsの2のために変更された場合、私は知らないのStruts 1と仮定メートル

あなたのメッセージリソースファイルにでerrors.headerとerrors.footerを置くことができ

errors.header=<h3><font color="red">Errors:</font></h3><ul> 
errors.footer=</ul> 

ヘッダーとフッターActionErrorsオブジェクトにエラーがある場合にのみ表示されます。返す前に、次に

ActionErrors errors = new ActionErrors(); 
if (badInput) { 
    errors.add(ActionErrors.GLOBAL_ERROR, 
    new ActionError("error.bad.input", badString); // key in messages resource file 
            // badString will replace {0} in message 
} 

:あなたのActionクラスで

は、これを行うにあなたのメッセージリソースファイルで

saveErrors(request, errors); 

:今

error.bad.input=<li>Bad input: '{0}' is invalid.</li> 

<html:errors/>タグが処理されるときそれは次のようになります:

<h3><font color="red">Errors:</font></h3><ul> 
<li>Bad input: 'xxyyzzz' is invalid.<li> 
</ul> 
+0

これは確かにカラフルな答えですね。ここでフォーマットがどのように機能するかはわかりません。 –

+0

ありがとうございました!私はまだ検証しようとしています(あなたのsugestiongsに続いて、彼らは本当に良いです!私はこのようなものが必要です、すべて同じ場所で説明されました) ;) – Tere

+0

これに関する最も良い解説は、「Struts Framework:Java Programmersのための実践ガイド」(Sue Spielman、ISBN 1-55860-862-1)です。第5章それは段階的に進む。 –

関連する問題