[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 メーリングリストの案内