- - PR -
JSPの内容を変える方法
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-02-16 08:56
JSPにボタンを用意して権限ごとに押せる押せないを
設定している画面があります。 DB上で権限を切り替えてもJSPは前の状態でコンパイルされて いるので、ボタンの状態が変わらなくて困っております。 どなたかよい方法があれば教えてください。 よろしくお願いします。 |
|
投稿日時: 2006-02-16 09:22
異なる JSP を用意していて、アクセスする人ごとに置き換えて再コンパイルされるのを期待しているということでしょうか?
つまり、質問の根本は「JSP ファイルを更新したのに再コンパイルされない」ということですか? だとすれば JSP の更新チェックがちゃんと行われる設定になっているか確認しましょう。 たとえば WebLogic Server では jsp-descriptor の pageCheckSeconds パラメータで指定します。 http://edocs.beasys.co.jp/e-docs/wls/docs81/webapp/weblogic_xml.html#1055154 しかし、アクセスする人毎に JSP を書き換える方法では同時にアクセスが来た場合に対応できませんし、パフォーマンス的にも我慢ならない状態になるでしょうからお勧めしません。 JSP 内に表示ロジックを書いて表示・非表示を切り替える方法をお勧めいたします。 また、表示だけでなく isUserInRole() でサーブレット側でも権限の有無を確認するのをお忘れなく。 http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/http/HttpServletRequest.html#isUserInRole(java.lang.String) ボタンが無効になっていてもボタンを押したのと同じリクエストを発行することはできますので。 [ メッセージ編集済み 編集者: インギ 編集日時 2006-02-16 09:25 ] |
|
投稿日時: 2006-02-16 09:37
インギさんありがとうございます。
現在はJSPでJAVA Scriptを使用して使える使えないを切り替えています。 画面表示時にDBから権限の値を取得してbean:writeで取得し、 その値によってボタンを切り替えてます。 1回目に制限のかかったユーザーでログインして、ログアウト。 2回目に管理者権限ですべてのボタンが使えるユーザーでログインすると 1回目のボタンの状態のままになっています。 それをなんとかしたいのです。。。 >また、表示だけでなく isUserInRole() でサーブレット側でも権限の有無を確認するのをお忘れなく。 確かにそうですねー。 さっそく直します。 |
|
投稿日時: 2006-02-16 09:49
えーと、JSP コンテナではなく JavaScript の話ということでしょうか?
「DB上で権限を切り替えてもJSPは前の状態でコンパイルされている」というのがイマイチわかりません・・・。 bean:write で取得、とあるので JavaScript を動的に出力しているのではないかと推測しますが、JavaScript は期待通りに出力されているでしょうか? ・bean:write で期待される値が出力されているか ・出力されている JavaScript でボタンの状態を適切に変更できるのか といった点を確認してみてはいかがでしょう。 |
|
投稿日時: 2006-02-16 09:52
JSPの中にはHTMLだけではなく、Javaのコードも書けます。
DBから権限の値を取得した時点で、 管理者の場合だけすべてのボタンのHTMLを書き出すよう、Javaで作ればいいでしょう。 |
|
投稿日時: 2006-02-16 10:11
インギさん、mioさんありがとうございます。
Java Scriptで書き出す順番が違っていたみたいで うまく表示されなかったみたいです。 もうちょっと修正すればできそうですが、 もし無理であればmioさんの言われる様に >管理者の場合だけすべてのボタンのHTMLを書き出すよう、Javaで作ればいいでしょう。 の方法で修正しようと思います。 インギさん、mioさんどうもありがとうございました。 |
|
投稿日時: 2006-02-16 12:38
bean:writeタグは内部でJavaのコードが実行されているだけで、
直接JSPにJavaのコードを書かなくても済むようにしているだけです。 logicタグに条件分岐を行うタグがあるので それを使ってみてはいかがでしょうか。 あと、結果が変わらない場合はブラウザのキャッシュが残っているケースもあります。 今回は当てはまらないようですが、レンダリングされるHTML/JavaScriptが キャッシュってケースもあるので注意が必要です。 また、JavaScriptで権限管理のフラグを持つっていうのは 少々知識があれば幾らでも回避できますし、 JavaScriptが無効であれば動作しないので危ないです。 |
1