0

當我嘗試在控制器擴展中保存記錄時,出現「轉換錯誤設置值」。該頁面看起來是我期望的方式,但是當我選擇一個或多個複選框時,它會給我那個錯誤。我沒有看到錯誤在這裏。謝謝您的幫助。Visualforce的轉換錯誤設置值 - 與selectCheckboxes的綁定問題

頁:

  <apex:pageBlockSectionItem > 
       <apex:OutputLabel value="Assigned Areas of Coverage" for="books" /> 
       <apex:selectCheckboxes value="{!selectedBooks}" 
        layout="pageDirection" id="books"> 
        <apex:selectOptions value="{!options}" /> 
       </apex:selectCheckboxes> 
      </apex:pageBlockSectionItem> 

控制器:

public String[] selectedBooks {get; set;} 

public List<SelectOption> options 
{ 
    get 
    { 
     List<SelectOption> result = new List<SelectOption>(); 
     List<String> optionNames = bookNames(books); 
     optionNames.sort(); 

     for(String n : optionNames){ 
      if(!blacklist.contains(n)){ 
       result.add(new SelectOption(n, n)); 
      } 
     } 

     return result; 
    } 
} 

private List<Book__c> books 
{ 
    get 
    { if (books == null){ 
     books = [select Id, Name from Book__c]; 
     } 
     return books; 

    } 
    set;  
} 

private List<String> bookNames(List<Coverage__c> coverage) 
{ 
    List<String> result = new List<String>(); 

    for(Coverage__c c : coverage){ 
     result.add(c.Book__r.Name); 
    } 

    return result; 
} 

private List<String> bookNames(List<Book__c> books) 
{ 
    List<String> result = new List<String>(); 

    for(Book__c b : books){ 
     result.add(b.Name); 
    } 

    return result; 
} 

private List<Id> bookIDs(List<String> bookNames) 
{ 
    List<Id> result = new List<Id>(); 
    Set<String> bookNamesSet = new Set<String>(bookNames); 

    for(Book__c b : books){ 
     if(bookNamesSet.contains(b.Name)){ 
      result.add(b.Id); 
     } 
    } 

    return result; 
} 

回答

-1

我認爲你必須張貼更多的代碼,它不是明確你希望達到什麼:

  • 什麼是你的實際「命令」功能,我沒有看到任何<頂點:commandButton action =「{!fun}」.. 。>而不是控制器中的單個函數看起來像「public void fun()」或「public PageReference fun()」 - 我特別指沒有輸入參數的部分。

  • 您的代碼無法編譯,我把它換成Book__c與帳戶和覆蓋接觸,但例如在

    「黑名單」 變量如果(!blacklist.contains(N)){

未定義。我可以認爲這和「結果」是一樣的,但是你知道......垃圾進入垃圾了。我們可能只需要您省略的部分;)另外 - 您是否可以使用標準Salesforce對象複製問題,以便爲我們測試更容易?

  • 「selectedBooks」是在頁面中讀取的,但您從未設置過值?甚至沒有對最簡單的selectedBooks = new String [] ...未初始化的變量a是在Salesforce留言板上討論的similar problem的解決方案。

  • 只是一個隨機的思考 - bookIDs()函數,你可以使用地圖<標識,Book__c >更好或地圖<標識,字符串>。如果需要,第一個甚至可以直接從[SELECT Id,Name FROM Book]實例化。您需要一組ID - 之後使用keySet()方法。你想要一本書的清單 - 使用values()。

+0

問題在於列表從未實例化,正如您指出的那樣。令人困惑的是,在所有其他情況下,這會拋出一個空指針異常,因爲我試圖解引用一個指向無關的變量。 – Ben 2010-06-30 00:45:12

相關問題