2016-10-19 13 views
2

ユーザーが1つのグループからのみ人を選択できるようにする名前コントロールが必要です。私はグループ名でいくつかのパラメータを追加する可能性を持っています。Xpages - xe:namePickerコントロールのためのカスタムbeanNamePickerにパラメータを追加する方法

私は、次のnamepicker

<xe:namePicker id="namePicker1" 
       for="myControlId" dialogTitle="Select person"> 
     <xe:this.dataProvider> 
      <xe:beanNamePicker dataBean="mybean.BeanPickerGroupMembers" loaded="true"> 
       </xe:beanNamePicker> 
    </xe:this.dataProvider> 
</xe:namePicker> 

は私の豆は、このようになりますしている:

public class BeanPickerGroupMembers implements INamePickerData { 

    public BeanPickerGroupMembers() {} 

    @Override 
    public IPickerResult readEntries(IPickerOptions options) { 
     List<IPickerEntry> entries = new ArrayList<IPickerEntry>(); 

     //do something according to desired group name 

     return new SimplePickerResult(entries, -1);  

    } 

    @Override 
    public List<IPickerEntry> loadEntries(Object[] ids, String[] attributeNames) {return null;} 

    @Override 
    public String[] getSourceLabels() {return null;} 

    @Override 
    public boolean hasCapability(int capability) {return false;} 
} 

にはどうすればnamePickerから私のBeanにいくつかのグループのparamを渡すことができますか?私はいくつかのスコープ変数を使用するかもしれませんが、異なるグループを選択したプロバイダで2つ以上のピッカーコントロールを使用する可能性を持ちたいと思います。

答えて

0

私は同様の要件を満たしています。私は名前ピッカーに引数を追加する方法を見つけることができませんでした - しかし、私はビュースコープ変数に "フィルタ値"を追加しました - ちょうどreadEntries()メソッドの私の名前ピッカーコードでそれをチェックしました。

だからここであなたは// Do something....は、私はこのコードを持っています

if (null != ClubAdminBean.getCurrentInstance().getLocationType()) { 
    locationType = ClubAdminBean.getCurrentInstance().getLocationType(); 
    System.out.println("locationType=" + locationType); 
} 

を...そして私のClubAdminBeanに、私は豆を取得するには、このメソッドを実装している:

私は実装する傾向がある
public static ClubAdminBean getCurrentInstance() { 
    // This is a neat way to get a handle on the instance of this bean in the application scope from other Java code... 
    FacesContext context = FacesContext.getCurrentInstance(); 
    ClubAdminBean bean = (ClubAdminBean) context.getApplication().getVariableResolver().resolveVariable(context, "ClubAdmin"); 
    return bean; 
} 

すべての私の豆で簡単に検索:-)

明らかに、あなたはbeanを持つ必要はありません - しかし、単一の値をビュースコープに格納することもできますvar iable。

/John

+0

カスタムnamePickerBeanを使用する単一の名前のピッカーがあればうまくいきます。私の場合、私は異なるグループを選択して私のxpage上の私のプロバイダで2つ以上のピッカーコントロールを使用する可能性があります。 –

+0

あなたの質問からそれを見ることができませんでした....しかし、私はそれがうまくいくと思います。フォームの関連する部分に焦点を当てて、ビュースコープのvar(またはbean)を設定するだけでよいので、名前ピッカーはあなたが呼び出したものを検出できます。 「現在の要素」(つまり「id」)を取得できるかどうかはわかりませんが、それは別のパスになる可能性もあります。 –

+0

はい、このソリューションでは、キー値をスコープに追加するイベントを追加する必要があります。さて、ラベルと値を計算するsigle value pickerを追加することになりました。 –

関連する問題