目次へ

5.4. formタグ/submitタグ/cancelタグ/resetタグ

formタグはHTMLの<form>、submitタグは<input type="submit">、resetタグは<input type="reset">を置き換えて使用するものです。cancelタグもsubmitタグと同じく<input type="submit">を生成するのですが、少し動作が異なります。いずれのタグも属性については、ほぼHTMLにおけるものと同じになっています。以下はformタグの主要属性一覧です。

action

HTTPリクエストの送信先URLを指定します。ただしHTMLの<form>タグとは異なり、Webアプリケーションルートからのパスで指定します。

enctype

HTMLの<form>タグと同じです。フォームの内容をどのMIME形式にエンコーディングして送信するか指定します。ファイルアップロードを行う場合以外では、通常指定しません。
method HTTPメソッドを指定します。GETかPOSTです。省略した場合はデフォルトでPOSTが使用されます。

以下はformタグを使用した例です。

...
<html:form action="/sample/ProductInput.do" method="post">
  ...
</html:form>
...

formタグのaction属性の値によって、このフォームがどのActionForm Beanに対応するか判定します。textタグやcheckboxタグなど、フォームコンポーネントを置き換えるHTMLタグは、formタグで囲まれた範囲内で使用することが絶対条件です。

続いてsubmitタグ/cancelタグの主要属性一覧です。いずれも<input type="submit">タグを生成しますが、cancelタグを使用すると、ActionForm Beanのvalidation機能を回避するようになります。

value

ボタンのラベルを指定します。また次のproperty属性が指定された場合には、パラメータ値として送信されます。

property

パラメータ名。HTMLにおけるname属性に対応する。ただしcancelタグにおいてこの属性にデフォルト値以外の値を指定すると、validation機能を回避しなくなります。デフォルト値は「org.apache.struts.taglib.html.CANCEL」です。

cancelタグで作成したsubmitボタンを押した場合、ActionForm Beanのvalidationを回避し、Actionクラスのexecuteメソッドが直接呼び出されます。このボタンを押してexecuteメソッドが呼び出されたかどうかは、ActionクラスのisCancelledメソッドで判定します。

public class ProductOutputAction extends Action{
  public void execute(ActionMapping mapping, ActionForm form,
                      HttpServletRequest request, HttpServletResponse){
    if(isCancelled(request)){
      // キャンセル時の処理
      ...
    }
  }
}

resetタグは<input type="reset">を生成します。主要属性は1つで、以下のとおりです。

value

ボタンのラベルを指定します。省略した場合はボディ部の文字列が、ラベルとして使用されます。

(実習課題3)

実習課題2のWebアプリケーションを改良しなさい。

  • HTMLタグライブラリのformおよびsubmitタグを使用すること。
  • cancelタグを追加し、submitタグとの違いを確認する事。

解答例はこちら

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp