SAStruts/JSP/入力フォーム

SAStruts/JSP/入力フォーム

テキストボックス

基本。自明の場合は name 指定はいらないが、つけないとエラーも出ず値だけなくなった状態になることがあるので、name に form を必ず指定したほうがいいだろう。

<html:text property="hoge" name="piyoForm" />

taglib のタグは柔軟性が無く、JSのライブラリ等が使う独自属性を付与することができないので

<input name="hoge" value="${ piyoForm.hoge }" />

でもいいだろう

チェックボックス

これは別に SAStruts とはなんの関係もないんだけど、ここにのせとく

JSP 自体にはこのように書く

<html:multibox property="hoges" name="piyoForm" value="aaa" />

SAStruts で入力フォームを作るときはサーバから画面を再現する入れ物と、画面からサーバへ値を送る入れ物を同じにしておく。 今回ならば piyoForm 。値受取り用の SAStruts の Form クラスを画面出力用にも使うということ。

property 属性に指定している hoges は PiyoForm クラスの public メンバで String 配列に設定。これはString の配列じゃないとだめっぽい property とか name とか value とか使うタグによって意味がかなり変わるのでこういうのやめてほしい

これで hoges が中身空っぽだったとすると

<input type="checkbox" name="hoges" value="aaa" />

という HTML に展開される。

ここでこのチェックボックスにチェックを入れてサーバーに送信すると、piyoForm.hoges の配列に「aaa」という値が格納される。あとは勝手に取り出して煮る。

逆に piyoForm.hoges 配列に「aaa」という値を突っ込んでJSPを描画すると multibox 側が hoges 配列の中身を全部調べてくれて、自分に指定されている value と同じ物があれば自動的に checked の状態にしてくれる。

これで受けとりとその逆の再現が相互にできるようになっている。

セレクトボックス

セレクトボックスはこのように作る

<html:select property="piyo" value="${ hogeForm.piyo }" >
    <c:forEach var="po" items="${ piyoOptions }">
        <html:option value="${ po.val }">${ po.name }</html:option>
    </c:forEach>
</html:select>

piyoOptions の各要素が選択肢用の値と表示用の名前を持っているとする。

po.val の値と hogeForm.piyo の値が一致するとその選択肢が選択状態(selected)になる。

このような複数選択肢系は Action 側から Enum を持ち込んで、それを使うことで Java 側と統一が取れるのでそのような Enum を Action の 内部に作っておくといいだろう。

セレクトボックス(マルチセレクト)

基本はセレクトボックスと同じだが

<html:select property="piyo" value="${ hogeForm.piyo }" multiple="multiple">

このようにmultiple属性をつける

複数選択した場合formにはList<String>としてマッピングされる。

ラジオボタンを作る

<html:radio property="hoge" value="v1" />
<html:radio property="hoge" value="v2" />

このように記述すると

<input type="radio" value="v1" name="hoge">
<input type="radio" value="v2" name="hoge">

のようなHTMLが生成される

PiyoFormに hoge プロパティが存在しその値がvalue値と一致しているとチェックが入る

押すボタンによって呼び出す Action メソッドを切り替えるボタン

<form name="hogeActionForm" method="POST" action="/sample01/hoge/">
    <input type="text" name="name" value="">
    <input type="submit" value="Submit" name="piyo">
    <input type="submit" value="Submit" name="fuga">
    <button type="submit" formaction="piyo">submit</button>
    <button type="submit" formaction="fuga">submit</button>
</form>

input submit の name 属性値で指定するActionメソッドを起動できる。 button タグの場合はformaction(html5の仕様)属性を入れるとブラウザ側がそのアドレスへリクエストしてくれるのでこれが使える。

java/sastruts/jsp/input_form.txt · 最終更新: 2020-06-05 14:03 by ore