2013-10-19 33 views
6

Bu kodu vardır:tür uyuşmazlığı

<xe:formTable id="formTable1" formTitle="User Roles"> 
    <xe:formRow id="formRow1" label="Category Admin"> 
     <xe:djextNameTextBox id="edtCatAdmin" multipleSeparator="," value="#{exhibitorInfo.categoryAdmin}" /> 
     <xe:namePicker id="namePicker1" for="edtCatAdmin"> 
      <xe:this.dataProvider> 
       <xe:namePickerAggregator> 
        <xe:this.dataProviders> 
         <xe:dominoNABNamePicker addressBookSel="first" groups="false" people="true" /> 
         <xe:dominoViewNamePicker labelColumn="mailinName" viewName="lkp_MailIn" label="Group Mailboxes" /> 
        </xe:this.dataProviders> 
       </xe:namePickerAggregator> 
      </xe:this.dataProvider> 
     </xe:namePicker> 
    </xe:formRow> 
</xe:formTable> 

gol sadece çok değer adı seçici oldukça Java Bean içinde valies var kaydetmek sahip olmaktır sonra bir belge alanı. Bu yüzden ad seçici, xe: djextNameTextBox 'un isimlerini ve xe: xext: djextNameTextBox öğelerini kaldırmayı kolaylaştırmak için işaret eder. Bu Java Kodunu Kullanma

-

public void setCategoryAdmin(ArrayList<String> categoryAdmin) { 
    System.out.println("Set CategoryAdmin - List"); 
    this.categoryAdmin = categoryAdmin; 
} 


public void setCategoryAdmin(String categoryAdmin) { 
    System.out.println("Set CategoryAdmin - String"); 
    if (!this.isBlankString(categoryAdmin)) { 
     ArrayList<String> al = new ArrayList<String>(); 
     al.add(categoryAdmin); 
     this.setCategoryAdmin(al); 
    } 
} 

BİRDEN değerler için iyi çalışıyor gibi görünüyor. Ancak, yalnızca tek bir valule kullanılırsa bir hata alıyorum: argüman türü uyuşmazlığı java.lang.IllegalArgumentException: argüman türü uyuşmazlığı

Bunun, birden fazla değer için bir dizi döndüren XPages ve tek değerler için bir dize ile yapılması gerektiğine inanıyorum. Ama bu işi nasıl yapacağımı bilmiyorum.

Herhangi bir tavsiye memnuniyetle karşılanacaktır! Teşekkürler!!

--UPDATE-- Bu kod, Camac'in bağlantılı olduğu blog bloğunun çalışması gibi görünüyor. i aynı sorunu yaşıyor ve bu bağlantıdan ipuçlarını kullanarak hatırlıyorum

public Object getCategoryAdmin() { 
    System.out.println("getCategoryAdmin"); 
    return this.categoryAdmin; 
} 


@SuppressWarnings("unchecked") 
public void setCategoryAdmin(Object inputMulti) { 
     this.categoryAdmin = this.translateToVector(inputMulti); 
    } 

@SuppressWarnings("unchecked") 
public Vector translateToVector(Object object){ 
if(object instanceof String){ 
    Vector list = new Vector(); 
    list.add(object); 
    return list; 
} 

if(object instanceof List){ 
    return (Vector)object; 
} 

return null; 
} 
+3

XPage, fasulye yöntemi aşırı yüklenmesini anlamıyor ve her zaman liste bağımsız değişkenini seçiyor. Camac'ın cevabı çözümdür. XPage her zaman Dize veya Liste döndürdüğünde hoş olurdu ... –

+2

@PanuHaaramo: Bu bir JSF'ye özgü sorun. EL, * Sınıf * diyerek bir yöntemi çözdüğü için yalnızca ilk Genel Belirleyici kullanılır. * getMethods() * ve aranan adla bulunan ilk kamu yöntemini kullanır. Başka bir yaklaşım, bir nesne ile bir kamu yöntemine sahip olmak ve özel belirleyiciyi çağırmaktır. Daha sonra aşırı yükleme beklendiği gibi çalışır. –

+0

Ne kadar sinir bozucu bu xpages durumdur! günümü kurtardın, teşekkürler. Düşündüğüm başka bir cevap (ama henüz uygulanmadı), her zaman sunulan dizenin sonuna bir boş değer eklemekti, böylece her zaman bir dizi. Daha sonra kodunuzun boşlukları görmezden gelmesini sağlayın. Yine de denemedim. – user2808054

cevap

İlgili konular