[Seasar-user:7618] Re: [Teeda] メッセージ出力時のdivによる表示・非表示処理について
Shinpei Ohtani
[E-MAIL ADDRESS DELETED]
2007年 5月 14日 (月) 13:27:48 JST
大谷です。
> ふと気が付いたのですが(現在直面しているのですが)、
> ありがちなWebアプリのパターンで、ログインユーザの権限に応じて
> ボタンの表示を行うような場合に、<div id="is〜">を使うと、
> 表示条件がエラーに応じて、変わってしまいます。
権限によってのボタン表示は、画面が初期表示された段階で
なされているのであれば、エラー時でも変わらないと思います。
Conditionの評価はされず、Validationされる前の状態に戻るはずなので。
下記のようにinitializeでhogeフラグをtrueにして、
Validationエラー時でもtrueになっていて、isHogeのdivタグで
囲まれているボタンも表示されます。
Pageクラス抜粋
public class LoginPage {
public static final String loginId_TRequiredValidator = null;
public static final String password_TRequiredValidator = null;
private String loginId;
private String password;
private boolean hoge = false;
public String initialize() {
hoge = true;
return null;
}
public boolean isHoge() {
return hoge;
}
public void setHoge(boolean hoge) {
this.hoge = hoge;
}
public String prerender() {
return null;
}
public String doLogin() {
hoge = true;
return "welcome";
}
(以下、省略)
HTML抜粋
<form id="loginForm">
login : <input type="text" id="loginId" /><br />
password: <input type="password" id="password" /><br />
<input type="submit" id="doLogin" />
<div id="isHoge">
<input type="submit" id="doLogin-2" value="HOGEOHOGE"/>
</div>
07/05/11 に Satoshi Takei<[E-MAIL ADDRESS DELETED]> さんは書きました:
> 武居です。
>
> ふと気が付いたのですが(現在直面しているのですが)、
> ありがちなWebアプリのパターンで、ログインユーザの権限に応じて
> ボタンの表示を行うような場合に、<div id="is〜">を使うと、
> 表示条件がエラーに応じて、変わってしまいます。
>
> エラーにかかわらず、<div id="is〜">をPageのプロパティに対応させる
> 事ができるような方法があると良いのですが、
> DynamicPropertyを使用して該当するボタンのスタイルを非表示にする
> 方法しか思いつきません。
>
> このような場合、Teedaでは、どのような実装を行うのがベストでしょうか?
>
> 以上、よろしくお願いします。
>
> Shinpei Ohtani wrote:
> > 大谷です。
> >
> > Condition(isXxx, isNotXxx)では描画すべきかどうかのタイミングで
> > FacesMessageが含まれているかを見ています。
> > Validationにひっかかった場合にそのまま判断されると都合が悪いからです。
> >
> > なので、doHoge()メソッドのように、FacesMessageUtil.addErrorMessage
> > してしまうと、現状ではisNotHogeになってしまいます。
> >
> > これはTeedaの不具合な部分もあるので、ConditionでValidationエラーだと
> > 判断する条件を、FacesMessageのSeverityがERRORかFATALの場合のみに
> > 絞ります。
> >
> > なので、
> >
> >
> >> public String doHoge() {
> >> hoge = true;
> >> FacesMessageUtil.addErrorMessage("hoge"); ...(1)
> >> return null;
> >> }
> >>
> >
> > を
> >
> > public String doHoge() {
> > hoge = true;
> > FacesMessageUtil.addInfoMessage("hoge"); ...(2)変更部分
> > return null;
> > }
> >
> > のように記述してください。JSFでは画面へのメッセージ的な場合には
> > FacesMessage.SEVERITY_INFOを使います。
> > Teeda側もこれで動くように修正します。
> > 宜しくお願いします。
> >
> >
>
> --
> 武居聡([E-MAIL ADDRESS DELETED])
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
--
=============================
Shinpei Ohtani
[E-MAIL ADDRESS DELETED]
=============================
Seasar-user メーリングリストの案内