0

アプリケーションに Struts 1.2 を使用しています。ユーザーから提供された入力に対していくつかの検証を行っているフォームの検証メソッドがあります。userName以下は、ユーザーが提供するのコードです。

@Override
public ActionErrors validate(ActionMapping mapping,
        HttpServletRequest request) {

    System.out.println("Validating the Form...");
    ActionErrors errors = new ActionErrors();

    if(userName != null && userName.length() <= 0)
        errors.add("userName",new ActionError("Invalid UserName"));

    return errors;
}

userName がユーザーによって入力されていない場合、上記のエラー メッセージが UI に表示されます。以下は、上記のエラー メッセージを表示するために jsp ファイルで使用したコードです。

<logic:messagesPresent property="userName">                             
    <html:messages id="userName" property="userName">
        <bean:write name="userName"/>
    </html:messages>
</logic:messagesPresent>

しかし、エラーメッセージは表示されませんでした。

私もこの代替案を試しましたが、これもうまくいきませんでした.:

<logic:messagesPresent property="userName">                             
        <html:errors property="userName" /><html:errors/>       
</logic:messagesPresent>

コードをデバッグしようとすると、メソッドvalidateが実行され、検証エラーがあるためメソッドがトリガーされません。UI では、エラー メッセージは表示されません。これを修正する方法を教えてください。formexecute

4

1 に答える 1

2

ActionErrorエラーメッセージ自体は受け取りません。代わりに、アプリケーションの MessageResources bundle内のエラー メッセージへのキーを取得します。

自動フォーム検証に関するStrutsのドキュメントから:

ActionMessage を含む ActionErrors インスタンスを返します。これは、表示する必要があるエラー メッセージ キーを (アプリケーションの MessageResources バンドルに) 含むクラスです。

したがって、次のようにする必要があります。

errors.add("userName",new ActionError("userName.invalid"));

次に、リソース バンドルには、次のようなものが含まれている必要があります。

userName.invalid=Invalid UserName

また、Struts 1.x はかなり古く、End-Of-Lifeに達しています。これが新しいアプリケーションである場合は、新しいものを検討することをお勧めします.

于 2013-05-12T11:48:26.803 に答える