0

私はstruts2、Hibernateでプロジェクトをやっています。

ストラットでフォームを検証したい。を追加しましたがMyAction-validation.xml、かなりうまく機能します。(クライアント側で検証しないので、かなりうまく言います。<s:form/>タグのvalidate属性をtrueに設定しました)

最初にいくつかのエラーが表示され、グーグルで検索すると、入力名で結果を追加する必要があることがわかりました。だから今、私はそれがどのように機能するのか、そしてその理由をよく理解せずに、自分のアクションに入力名を含む結果を持っています。

私のアクションは、 myAction.action url によって呼び出されるとプレーンフォームを返し、フォームが送信されると、データはアクションパラメーターに直接送られ、データベースに保存されます。次に、入力されたフォームが成功メッセージとともに表示されます。フォーム フィールドは、送信時に検証する必要があります。ただし、アクションが呼び出されるたびに検証されます。アノテーションを試し@SkipValidationましたが、検証が完全にキャンセルされます。execute メソッドで validate メソッドを呼び出しても実行されません。System.out.printlnいくつかの行でテストしました。struts.xml での私のアクション定義は次のとおりです。

<action name="ShowAddItemPage" class="action.clerk.ShowAddItemPage">
  <result name="success" type="tiles">addItem</result>
  <result name="generalError" type="tiles">clerkGeneralError</result>
  <result name="input" type="tiles">addItem</result>
</action>
  1. クライアント側で検証を機能させるにはどうすればよいですか?
  2. フォームの送信時にのみ検証を実行し、アプリケーションによってフォーム フィールドが提供されたときに検証を無効にするにはどうすればよいですか?
  3. 入力結果名とは何ですか?なぜそれをアクション結果に追加する必要があったのですか?
4

1 に答える 1

2
  1. あなたが言ったように、validate属性をtrueに設定することによって。
  2. フォームを表示するための別のアクションを使用するか、GET の検証をスキップするインターセプターを作成する (以前はそうしていました) などです。
  3. "input" は検証が失敗した場合に使用される結果ですが、変更することはできます。検証が失敗した場合 (デフォルトでは型変換も失敗した場合)、どこかに移動する必要があり、"入力" の結果は where になります。
于 2013-01-06T18:59:38.973 に答える