- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2023-07-18T11:41:51+09:00","default:irrp","irrp")
→JavaのWebアプリ開発
→Struts関連
→Java関連
#contents
*一般 [#e63fbea4]
-[[【初心者向け】Servlet/JSP間で画面遷移できないときの対処法3選 - Zenet Tech Blog>https://media.zenet-web.co.jp/entry/2023/07/18/112607]] 2023.7
-ベンダー名表示
<%= System.getProperty("java.vm.vendor") %>
-バージョン表示
<%= System.getProperty("java.vm.version") %>
-ライブラリファイルは.tld拡張子
-テーブルの一部の列を入力欄にして、各行につけたボタンでsubmitしたいとき
html:text のindexedをfalseにするのがポイント
<c:forEach var="m" items="${mapItems}" begin="0"
end="${dispMax - 1}" step="1">
<s:form target="_blank" >
<tr>
<td class="data01">${f:h(m.orderNo)}</td>
<td class="data01">${f:h(m.orderDateYmd)}</td>
<td class="data01">
<html:text name="m" property="passengerName" indexed="false" value="${m.passengerName}" />
</td>
<td class="data01">
<html:hidden property="id" value="${m.referenceId}"/>
<input type="submit" name="detail" value="詳細表示"/>
</td>
</tr>
</s:form>
</c:forEach>
--フォームクラス側
public String passengerName
--Action側はdetailメソッドが呼ばれたときにフォームの変数にアクセスできる
*StrutsでのJSPタグライブラリ [#u98260e6]
-[[タグライブラリについて>http://ash.jp/java/taglib.htm]]
-[[クライアントサイドのStruts Validator>http://www.javaroad.jp/opensource/js_struts19.htm]]
--<html:javascript>のformName属性にチェック対象フォームを指定しておくとvalidator.xmlファイルで指定されたチェックを行うjavascriptメソッドを自動生成する
--このときメソッド名は validate<フォーム名>となる
--<html:form>の onSubmit属性にそのメソッドを指定する
-入れ子になっているデータを<bean:write>に指定する方法3つ
--スクリプトレットを使う
--<bean:define>タグで中間beanを作成する
<bean:define id="hoge" name="xxx"" property="data" />
<bean:write name="hoge" property="xxx" />
--ピリオドで切って指定
<bean:write name="viewhelper" property="data.value" />
-<html:text>のindexd属性をtrueにするとhtmlのinputタグに変換される際にname属性の対象データを配列とみなす
-画像をボタンにする(<html:submit>と同じ効果がある)
<html:image page="(url)" property="imagebutton" />
-<html:cancel>
--<html:submit>とほぼ同じだが、Formで検証が行われないのと、Form:isCanceled()がtrueになる点が異なる
-チェックボックスなどの入力をひとまとまりのプロパティデータとして扱いたい
<html:multibox property="まとめたい名前" value="Check1" />
<html:multibox property="まとめたい名前" value="Check2" />
...
などと書いておくと、チェックした部分のデータが
まとめたい名前=Check1,Check2...
という形式で来る。ただしチェックされていたものが外れたという情報が取れないのでActionForm:reset()メソッドをオーバライドするようにする。ただしその場合副作用としてコンストラクタによる初期化は反映されなくなる。
-パスワード部分の*表示
<html:password property="xxx" redisplay="false" />
--http://struts.wasureppoi.com/taglib/02_password.html
-<html:cancel>ぜい弱性 Struts1.2.9以降で<html:cancel>を使うとボタンを押した後にInvalidCancelExceptionが発生する。設定ファイルによって抑制は可能
--http://www.javaroad.jp/bbs/answer.jsp?q_id=20061003183409280
html:cancelで脆弱性が発見されたための対応のようですね。
<action path="/Hoge" validate="true" cancellable="true" ... />
のように書くのではなく
<action path="/Hoge" validate="true" ... >
<set-property property="cancellable" value="true"/>
</action>
のように書くようです。
-リクエストをしないボタン
<html:button OnClick="javaScriptのメソッド"/>
**Strutsタグライブラリ [#r6fbaebb]
-html : html入力部品
-bean : Beanに対する操作
-logic : JSP上でのフロー制御
-tiles : JSPのテンプレート
-nested : Beanの属性の入れ子のBean操作