scans the request, session, and application attributes, in that order
scans the request, session, and application attributes, in that order
Value Stack は Struts2 のひとつ特徴的な機能かな。便利ではあるけれど、どういう動作をしているかがちゃんとわからないと気持ち悪い。 まず簡単な利用法としては、ビューから Action クラスの getter メソッドに簡単にアクセスできる。Action クラスに getName() というメソッドがあれば、 ${name}でその値が取得できる(テンプレートエンジンは FreeMarker として)。ここまでは良い。 ちょっとわかりにくいのは Value Stack にはいくつかのスコープがあり、それらに透過的にアクセスできること。スコープは 4 つあり、以下の優先度で検索される。 一時オブジェクト (ループ変数とか、テンプレート内で生成されるオブジェクト) モデルオブジェクト アクションオブジェクト 名前指定オブジェクト (application とか scope とかの
id: 1005 所有者: msakamoto-sf 作成日: 2011-08-14 20:18:02 カテゴリ: Java 最近のお仕事で、StrutsっぽいWebアプリでGETとかPOSTパラメータ名が foo.bar=... みたいなドット区切りのを見かけるようになった。 PHPだと"_"に強制的に変換されてしまうのだが、Javaの世界だとどうなってるのだろう、と、数年ぶりにStrutsを触ってみた。 現在はStrutsが2.2.3まで出てる。 自分が最後に触ったStrutsは1.x系で、まさしくXML地獄となっていたのがだが、あれから多少楽になったようだ。 煩わしいForm定義から解放され、DIコンテナとの統合もなされ、洗練された印象を受ける。 で、肝心のドット区切りのパラメータについてだが、どうやらStruts2系ではパラメータの解釈でOGNLというのを使い、式評価によりJava
ActionSupport を継承したクラスです。アクション毎に用意します。リクエストパラメータの値は、このクラスに用意したプロパティ (public もしくはアクセサメソッドを持った変数)にセットされます。またプロパティはJSP からも参照可能です。またStruts2 が 提供するセッションスコープのMap オブジェクトにデータを保持したり、JSP から参照できたりします。 package mypackage; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionContext; import java.util.Map; public class BrowsePageAction extends ActionSupport { // request parameters
struts.xmlで使用できる属性、要素はここのdtdファイルでわかる。 まずはconstant要素 これはsturts2のデフォルトの設定を上書く際に使用する。 デフォルトの設定はstruts2-core-2.1.xxx.jarのorg/apache/struts2/default.propertiesに書かれている。 デフォルトでは以下の値が定義されている struts.i18n.encoding=UTF-8 struts.objectFactory.spring.autoWire = name struts.objectFactory.spring.useClassCache = true struts.objectFactory.spring.autoWire.alwaysRespect = false struts.multipart.parser=jakarta struts
ここに書いてあるとおりですが。 日付(Date)とか数値(Number)をフォーマットするのに MessageFormat が使えますという話 たとえば package.properties(など format.date_medium={0,date,medium} format.date_ymd={0,date,yyyy/MM/dd} format.date_time={0,date,yyyy/MM/dd hh:mm} format.number_money={0,number,#,##0} とかいておいて jspとかで <s:text name="format.number_money"> <s:param name="value" value="salesPrice"/> </s:text>円<br/> <s:text name="format.date_ymd"> <s:param
JavaでO/RマッパをするのにiBATISを使っています。 DBにインサートする時に、マッピングされたクラスに値を格納するわけですが、そのたびに //(抜粋) Emp emp = new Emp(); emp.setName(name); emp.setDept(dept); sqlMap.insert("insertEmpMap", emp); っていちいちsetterに渡すのは面倒ですね。というお話。 そこでActionクラスにEmpクラスを保持して、setterとgetterを作ってやる。 フォームは <s:form action="hello" method="post"> <s:textfield label="名前" name="emp.name" /> <s:textfield label="年齢" name="emp.age" /> <s:submit value="送信
Webアプリケーションフレームワークで有名になったなStrutsの後継、 『Struts2』 流石にStrutsの時のような爆発的に広まることはなかった印象です。 現在は、Webアプリケーションフレームワークも多様化しており、一時の Strutsのように、これがデファクト...といったものも存在しない感じです。 実際、今でもまだStruts1が現役で利用されているシステムも数多くあると いう話も聞きます。 前置きが長くなったのですが、 2013年7月18日のニュースで流れていました、 7月16日に公開されたStruts2の脆弱性問題、公開された翌日に その脆弱性を突いた攻撃が急増していたという調査結果が出ています。 任意のJavaコードを実行される可能性があるとのことなので、もちろん 最新版へアップデートすることも大切なのですが、驚いたのは、 まだまだ利用されている割合が少ないと思っていた
Struts2のカスタムタグには s:checkbox と類似の s:checkboxlist というのがある こちらは s:select と同じような使い方になる。 listのソースを固定値ではなく、プログラムから設定する方法で紹介する tutorial.Media.java public class Media { String type; String code; public Media( String type, String code ) { this.type = type; this.code = code; } public String getType() { return type; } public String getCode() { return code; } public void setType( String type ) { this.type = t
注意:最新の情報については2007-12-07もお読みください。 概要: Struts2では、ActionFormなどを用いなくてもFormを手軽に利用する仕組みが用意されている。たとえば、http://bar/foo.action?id=0001というリクエストは、Strutsでは「foo.actionのsetId("0001")を呼ぶ」といった処理として実行され、person.account.id=0123であれば「foo.actionのgetPerson().getAccount().setId("0123")を呼ぶ」が実行されるといった具合だ。 しかし、それをベタに実装してしまうと、ActionがSetterやGetterだらけになってしまい、DAOやら何やらとごちゃまぜになってしまう。そこで、ModelDrivenを使ってActionとデータモデルの分離を図るのが良さそうだ。 用
validation ファイルで struts.xml <result name="input">の定義が必要 設定ファイル "アクションクラス名-validation.xml"で作成する 配置位置はアクションクラスと同じ resourceの下にフォルダを作ってそこに配置で良いと思う クラスで validateメソッドをoverrideしましょう executeより前に呼ばれるので、初期表示の時も呼ばれます。そこは注意が必要 session SessionAwareのインタフェースを実装する sessionのsetterとgetterを実装 型はMapにでもして、単純に設けるだけでOK 遷移 struts.xmlに定義する 遷移の種類はactionタグに定義する 画面単位で設ける形になると思う 操作によって遷移先を変えたい場合はresultタグに定義する actionタグの小タグとして定義
書式 @Validations(requiredStrings = { // チェックしたい値用のValidations @Validations(fieldName = "変数名", message = "エラー時のメッセージ") }) Validationsにはチェックしたい値用のValidationsクラス名を記述します(下の表を参照してください)。 変数名はチェックしたい値が入っている変数名になります。 エラー時のメッセージはValidationsでのチェックが通らなかった場合に表示する文字列です。 importファイル 参照ライブラリ:xwork-2.1.2.jar import com.opensymphony.xwork2.validator.annotations.Validations; import com.opensymphony.xwork2.validator.a
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く