2014-06-13 41 views
0

我在我的XPages中使用名稱選取器來允許輕鬆選擇人員和組。這裏是我的代碼:Dojo名稱選取器 - 按姓氏和羣組排列的人

<xe:namePicker id="namePicker1" for="Receiver"> 
<xe:this.dataProvider> 
<xe:dominoNABNamePicker groups="true" nameList="peopleAndGroups" people="true"></xe:dominoNABNamePicker> 
</xe:this.dataProvider> 
<xe:this.rendered><![CDATA[#{javascript:docApplication.getItemValueString("ZwfStepNumber") == 1}]]></xe:this.rendered></xe:namePicker> 

如果我使用「peopleAndGroups」爲名稱列表屬性,所有的名字都是按名字列出。但我想要他們的姓氏。因此,如果我使用「peopleAsLastName」,至少我可以根據自己的需要得到它們,但是沒有組。

那麼我如何通過姓和所有組獲得所有人的列表?或者我該如何解決這個問題?有任何想法嗎?

回答

1

您可以創建自己的名稱選取器bean,並具有所需的行爲。

您需要創建一個實現INamePickerData接口的Java類。儘管它被稱爲bean,但你需要而不是在faces-config.xml中註冊它。重要的方法是返回您的自定義名稱選取器數據的readEntries()方法。這裏有一個簡單的例子:

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

    entries.add(new SimplePickerResult.Entry("CN=Person A/O=Org", "Person A"); 
    entries.add(new SimplePickerResult.Entry("CN=Person B/O=Org", "Person B"); 
    return new SimplePickerResult(entries, -1); 
} 

然後,您可以通過使用beanNamePicker數據提供程序使用您的自定義名稱選擇器。這裏有一個簡化的例子:

<xe:namePicker id="namePickerBean"> 
    <xe:this.dataProvider> 
     <xe:beanNamePicker> 
      <xe:this.dataBean><![CDATA[com.company.MyNamePicker]]></xe:this.dataBean> 
     </xe:beanNamePicker> 
    </xe:this.dataProvider> 
</xe:namePicker> 

還有an OpenNTF XSnippet with a more complete example of a name picke bean

+0

謝謝,我會試試那個 –

0

雖然在提供該數據的Domino目錄$ PeopleGroupsFlat中有一個視圖,但它看起來不是那種選項。它看起來像名稱選擇器正在使用$ VIM ...視圖。

我可以看到的唯一方法是使用namePickerAggregator dataProvider,並允許用戶在People By Last Name和Groups之間切換。 (擴展Name Picker或Value Picker的dataProvider並不簡單,因爲很多方法和內部類都受到保護。)

值得將它作爲一個功能請求添加到OpenNTF上的擴展庫項目中。我已經將它作爲OpenNTF Domino API的一個問題添加了。我們已經擴展了名稱選取器,所以我會考慮將它添加到那裏以及