@InvalidateSession
s2struts(1.3.0-RC5)で開発中ですが、
自前インターセプター内である条件の際に
HttpSession#invalidate()を呼び出してExceptionをスローしていたのですが、
セッション内にs2strutsのフレームワークで使用している情報があるらしく(s2strutsContext)、
スローしたExceptionが無視されてしまいます。
そこで、InvalidateSessionInterceptorを使用してセッションクリアを行おうと
自前インターセプター内のメソッドに@InvalidateSessionを付加したものの、
セッションがクリアされない・・_| ̄|○・・
・・原因はpublicメソッドでないのが原因でした。
@InvalidateSessionを設定するメソッドはprivateでもprotectedでもダメなんですね・・。
会社の人も同じ所でハマってました(・∀・)
以上
Kumu.Ajax.renderについて
[Seasar-user:12520] Re: [teeda ajax] Kumu.Ajax.render についてより
デフォルトはinnerHTMLにのみセットされるので
実際には開発者各自でカスタマイズしなければならない・・。
具体的な方法としてはKumu.Ajax._setJSONDataをオーバーライドする。
[ajax.js(現状)]
_setJSONData : function(node, data){ if(node.style.display == 'none'){ node.style.display = ''; } node.innerHTML = data; }
[オーバーライド]
Kumu.Ajax._setJSONData = function(node, data){ if(node.style.display == 'none'){ node.style.display = ''; } var tag = node.tagName.toLowerCase(); if(tag == 'input'){ node.value = data; }else{ node.innerHTML = data; } }
これでinputタグの値もレンダリングされるようになったけど、
こんなつくりでいいのかな〜(不安)・・。
以上
foreach内のcondition内のdoメソッドの呼び出し
1.0.12-rc1で対応されたのは確認したものの、
納品前でバージョンを上げる訳にはいかないので、
[Seasar-user:11043] [Teeda] 1.0.12-SNAPSHOT ForEach内のCondition内のdoメソッドが実行できないのスレッドを参考に回避策を記述します。
[hoge.html]
(foreach内) <!-- Conditionを用いた場合 <div id="isEven"> <input type="button" id="doEven" value="even"/> </div> <div id="isOdd"> <input type="button" id="doOdd" value="odd"/> </div> --> <!-- 回避策 --> <input type="button" id="doEven" value="even" style="dummy" /> <input type="button" id="doOdd" value="odd" style="dummy" />
[HogePage.java]
(略) public String getDoEvenStyle() { if(isOdd()){ return "display:none;"; } return null; } public String getDoOddStyle() { if(isEven()){ return "display:none;"; } return null; }
以上
DyanmicValidation
DyanmicValidationとはフィールドにかけるValidatorを動的に変更機能で
使用方法は以下の通り。
[hoge.html]
<input type="text" id="hoge"/><br/> <input type="text" id="moge"/>
[HogePage.java]
@Required // ←動的なValidatorが定義されている場合無視される private String hoge; private String moge; //JSFの暗黙オブジェクトのリクエストパラメータ private Map param; public Validator getHogeValidator(){ ValidatorChain chain = new ValidatorChain(); String paramMoge = (String)this.getParam().get("fugaForm:moge"); // mogeが入力されていたら if(paramMoge != null){ chain.add(new TRequiredValidator()); } return chain; }
※動的バリデーションが動作しているタイミングではPageクラスに値がセットされていないため、
必要な場合はリクエストパラメータから値を直接取得する必要がある。
以上
続spanタグを出力しない
以前、spanタグを出力しない方法(2007-10-26 - (TДT)のテンパリ日記)を書いたが、conditionでは併用することができない。
ただ、今後修正されるらしい・・(=_=)
([TEEDA-409] condition で te:omittag を使えるようにしました. - The Seasar Foundation Issues (Deprecated))
以上
エラー時に入力項目の背景色を変更する
以下の様にCSSの定義箇所に、『.onTeedaError』を追加する。
.onTeedaError {background-color: #FF9999; }
エラーメッセージのスタイルは各自でスタイルを定義する。
<span id="allMessages" class="error"/>
以上
奇数行と偶数行で色を変える
DynamicPropertyを使って属性を変更する。
方法は以下の通り。
[hoge.html]
<tr class="" id="designRow">
のタグの上で右クリックし、[Dolteng]-[Add Dyanamic Property]を選択する。
するとPageクラスにgetDesignRowClass()メソッドが生成するので、
そこに奇数・偶数行ごとにスタイルを変更するようなロジックを入れる。
[HogePage.java]
public int mogeIndex; public MogeDto mogeItems; public String getDesignRowClass() { if(mogeIndex % 2 == 0){ return "clr_01"; }else{ return "clr_02"; } }
以上