序文 -
「Struts2のアクションで」第III章にこの記事の対応
Struts2のフレームワークは、明確な理由がないのに、いくつかの場所、従来の、または使用OGNLかを使用することが非常に強い、十分に強いです、彼らは本当にのような手掛かりコードではありません。。。
唯一の私の読書ノートは、間違っている場合は、私に連絡してください。
テキスト -
この本は、3つのデータ転送の合計を記述する
最初のデータとして引き継ぐためにJavaBeanのアクションで、その後でユーザに提供します
提交的表单: <S:フォームアクション= "登録"> <S:テキストフィールド名= "ユーザ名"ラベル= "ユーザ名" /> <S:パスワード名= "パスワード"ラベル= "パスワード" /> <S:テキストフィールド名前= "portfolioName"ラベル= /> "あなたのポートフォリオの名前を入力し、" <S:提出/> </ sの:フォーム> アクション类 パブリック クラスの登録が拡張ActionSupport { 公共の文字列(実行){ / * *作成と移動を私たちのアプリケーションドメインのオブジェクト、ユーザーへのデータ。 * / ユーザのユーザ = 新しいユーザー(); user.setPassword(getPasswordに())。 user.setUsername(getUsername())。 getPortfolioService()createAccount(ユーザ)。 返すSUCCESSを。 } / * JavaBeansのプロパティは、リクエストパラメータを受信する* / プライベート文字列のユーザ名。 プライベート文字列のパスワード。 プライベート文字列portfolioName。 パブリック文字列getPortfolioName(){ 戻りportfolioNameと、 } ...与SE取得 T ... パブリック)PortfolioService getPortfolioService({ 戻り新しい)(PortfolioServiceします。 } } ユーザー类公衆 クラスユーザー{ プライベート文字列のユーザ名。 プライベート文字列のパスワード。 プライベート文字列portfolioName。 プライベートダブル歳。 プライベート日の誕生日。 プライベート文字列firstNameの; プライベート文字列lastNameの。 プライベート文字列のメール。 プライベート ブールreceiveJunkMail。 プライベートマップポートフォリオ= 新しいHashMapの(); .... ...与セットを取得 }
アクションフォームは二つのデータ、すなわち、ユーザ名とパスワードに提出され、ユーザー名とパスワードは、ここにOGNL表現され、それぞれのプロパティに対応するActionクラス。ここで再びJavaBeanのを務めたアクションを感じます。execute()メソッドでは、ユーザ名とパスワードは、ユーザーオブジェクトに提供されます。次に、新しいユーザーを作成しcreateAccountのPortfolioService()を呼び出します。
(これらの数字は、私自身の絵ではありません...できるだけ早く私に連絡してください。)
第二は、「オブジェクトのサポート(ObjectBacked)」を使用することです
アクションのプロパティは、同じ名前の属性のユーザー名とパスワードを使用して、そこにユーザー自身ので、ユーザー名とパスワードが、複雑なユーザーオブジェクトではありません表示されます。そのため、ユーザーの操作は、属性値のピックフォームなどのオブジェクトを渡します。
JSP表单 <S:フォームアクション= "RegisterOB"> <S:テキストフィールド名= "user.username"ラベル= "ユーザ名" /> <S:パスワード名= "user.password"ラベル= "パスワード" /> <sの:テキストフィールド名= "user.portfolioName"ラベル= /> "あなたのポートフォリオの名前を入力し、" <S:提出/> </ sの:フォーム> アクション类 パブリック クラス ObjectBackedRegisterは拡張ActionSupport { 公共の文字列(){実行 getPortfolioService()を.createAccount(ユーザ)。 返すSUCCESSを。 } / * JavaBeansのプロパティは、リクエストパラメータを受信する* / プライベートユーザーユーザー。公衆 ユーザのgetUser(){ 戻りユーザ。 } 公共 ボイドSETUSER(ユーザユーザ){ この .user =ユーザー。 } 公共PortfolioService getPortfolioService(){ 戻り 新しい(PortfolioService)を、 } }
この時点では、ユーザーオブジェクトの宛先属性に表現OGNLの深さの基準点を形成する必要があります。
(これらの数字は、私自身の絵ではありません...できるだけ早く私に連絡してください。)
第三は、「モデル駆動(ModelDriven)」であります
彼女は、このインターフェースはObject型を返す唯一の方法--getModelを()、持っている、私たちのModelDriven Actionクラスが実装するインタフェースを必要とします。
JSP表单 <S:フォームアクション= "RegisterMD"> <S:テキストフィールド名= "ユーザ名"ラベル= "ユーザ名" /> <S:パスワード名= "パスワード"ラベル= "パスワード" /> <S:テキストフィールド名= "portfolioName"ラベル= "あなたのポートフォリオの名前を入力します" /> <S:提出/> </ sの:フォーム> アクション类 パブリック クラス ModelDrivenRegisterは拡張 ActionSupport 実装ModelDriven { 公共の文字列(){実行 。getPortfolioService()createAccount(ユーザーを); 返すSUCCESSを。 ユーザのユーザ= 新しいユーザー(); パブリックオブジェクトgetModel(){ 戻りユーザ。 } 公共PortfolioService getPortfolioService(){ 戻り 新しい(PortfolioService)を、 } }
ここでは、ユーザーオブジェクトのユーザーをインスタンス化するコードは、getModel()は、その後、ユーザーを返してみましょう。。。フォームの値が上を通過します。
ユーザーが戻るが持ち帰ったデータを完全に配置する場合)は、ユーザーの枠組みの中に投げ込まアクションのように感じ、その後、getModel(。。。
(これらの数字は、私自身の絵ではありません...できるだけ早く私に連絡してください。)
実際には、フレームの内と外のデータについて、次の章と説明していOGNL
私たちは、彼に電話Struts2のインターセプタは不合理ではない、Strutsは再確立上記のように提出されたデータは、ValueStackと呼ばれる場所に行きますサーブレットAPIを、私たちの行動は、長い時間が待っています。この時点で「PARAMS」インターセプタはValueStackに正しい宛先を特定するために使用OGNL式、になるようにパラメータ名解決の値を要求し、この方法は、我々が通常のように、第二のパス値法において特に明らかであるOGNL正しい位置に奥行き参照データと同様、Javaプログラムを書きます。
あとがき -
実際に、私はちょうどそれが混乱していた。この時間を開始し、OGNLは何ですか?なぜ、あなたは正しい場所に渡された値の文言を統一することができるでしょうか?そして、私は今、私は少し理解して振り返るが、私は問題を抱えています。
しかし、私はそれはそれはオブジェクトのサポート(OB)だけでなく、モデル駆動型(MD)であるかどうか、だけStrutsのフォーム送信データについてであれば、私は私の理解を書き留めているはずだと思い、ノートの目的を持っています。
うまくいけば、この記事はあなたを助けることができます