slack

テクてく Lotus 技術者 Slack に参加しよう!

2010/01/07

XPages Tutorial Part 32 : フィールドの編集にロールを使って制御する

Using Roles To Make Fields Editable {Original Source}

これまでページを編集モードに切り替えるところまで行いましたが、すべてのフィールドが編集可能な状態になっています。
実際のアプリケーションでは特定のフィールドに対して編集できないようにすることがよくあります。
今回はその方法を見ていきたいと思います。
では「content_Person」を開いてください。

では早速いくつかのフィールドを変更できないように設定しましょう。
では「FirstName」フィールドを選択しそのプロパティを見てください。
編集ボックス内のプロパティに「読み取り専用」のチェックがあります。ここをオンにすることで編集されることを防ぐことができます。

また「読み取り専用」のオプションには青いダイアモンドがあります。つまり計算結果によってこのフィールドを読み取り専用にしたり解除したりすることが可能です。

基本的にはエンドユーザーにはこの Job Title フィールドを編集してほしくないのですが、「PhonebookEditor」のロールをもつ特定のユーザーには編集を許すというシナリオを考えてみましょう。
その場合にはまず初めに Job Title フィールドの「読み取り専用」プロパティ横の青いダイアモンドをクリックします。次に値の計算を選びます。スクリプトエディタに次のコードを記述します。
var s1 = context.getUser().getRoles(); 
var s2 = "[PhonebookEditor]"; 

if(@Contains(s1, s2) == @True()) 
        return false; 
else 
        return true; 

上のコードをもっと短くしようと思えばできますが、今回良く理解できるようにこのように記述しました。2 つの変数を作成し、@Contains を使って現在のユーザーの .getRoles の値を取得しロールが存在するかを評価しています。これはいままでのクライアントベースのアプリケーションでもよく使用した方法とよく似ています。

次回はいくつかの妥当性検査をフィールドに設定してユーザーが正しく値を入力できるようにしたいと思います。

0 件のコメント:

コメントを投稿