Pregunta

Me estoy haciendo un 'valor de ajuste de conversión de error' cuando trato de guardar un registro en mi extensión controlador. La página se ve la forma en que se puede esperar, pero cuando selecciono una o más casillas de verificación, que da a mi que el error. No veo cuál es el error aquí. Gracias por la ayuda.

La página:

          <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>

El controlador:

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;
} 
¿Fue útil?

Solución

Yo creo que hay que publicar más de código y no está claro qué es exactamente lo que se desea lograr:

  • ¿Cuál es su función real "comando", no veo ninguna <ápice: acción commandButton = "{diversión!}" ...> y no con una única función de las miradas del controlador como "diversión public void ()" o "diversión PageReference pública ()" -. me refiero sobre todo la parte sin argumentos de entrada

  • El código no se compila, he reemplazado con Book__c cuenta y Cobertura con el contacto, pero por ejemplo la variable "lista negra" en

    if (! Blacklist.contains (n)) {

es indefinido. Puedo asumir que este es el mismo que "número", pero ya sabes ... la basura, sale basura. Podríamos necesitar sólo la parte que ha omitido;?) También - se puede replicar el problema con los objetos estándar de Salesforce por lo que es más fácil de prueba para nosotros

  • "selectedBooks" se lee en la página, pero nunca valor de ajuste? Ni siquiera a los más simples selectedBooks = new String [] ... La variable no inicializada a es solución a problema similar discutió en Foro de Salesforce.

  • Sólo un pensamiento al azar - función para bookIDs () que podría ser mejor utilizando Map o mapa . La primera de ellas, incluso se pueden crear instancias directamente de [SELECT ID, nombre de la agenda] si lo necesita. You Want conjunto de ID - utilizar el método de conjunto de claves () después. ¿Quieres una lista de libros - utilizar los valores de ()

  • .
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top