Pregunta

Estoy teniendo resultados extraños con una página Visualforce (sí, Salesforce.com es repulsivo, lo sé). Mi problema es que estoy tratando de utilizar el InputField para enlazar datos en un sObject costumbre, pero en mi controlador personalizado, que no reconoce los datos de entrada del usuario.

Aquí está el fragmento de código de la página:

<apex:pageBlockSection title="Enter New Fee" rendered="{!isRenderedFees}" >

    <apex:inputField value="{!workingFee.Fee_Type__c}"  required="True"/>
   <apex:inputField value="{!workingFee.Fee__c}"  required="True"/> 

    <apex:pageBlockSectionItem >
        <apex:CommandButton value="Save Fee" action="{!saveFee}"  immediate="true" />
        <apex:CommandButton value="Cancel" action="{!cancelFee}" immediate="true" />
    </apex:pageBlockSectionItem> 
 </apex:pageBlockSection>

y aquí es el código del controlador:

public Fee__c workingFee {get; set;}
 ....
public PageReference saveFee(){

    this.workingFee.Trade_Group__c = tradeGroup.id;
    try{
        System.debug('~~~~#~~#~~workingFee: '+workingFee.Fee_Type__c +'='+workingFee.Fee__c);
        upsert workingFee;
    }catch (System.Dmlexception e){
        ApexPages.addMessages(e);
        return null;
    }
    System.debug('~~~~#~~#~~workingFee: '+workingFee.Fee_Type__c +'='+workingFee.Fee__c);
    //savedFees.add(workingFee.clone());

    //re-render the page
    this.isRenderedFees = False;
    return null;
}

He hecho de que la propiedad workingFee no es nulo. Cada vez que pulsa el botón "Guardar Fee" después de introducir los valores, se vuelven a cargar la página y me da el mensaje "Error: Los campos necesarios están ausentes: [Fee__c]" (nota, Fee__c aquí es un campo de moneda - No es que se espera que esto sea un sObject, ¿verdad?)

La declaración de depuración en el método saveFee () muestra que los campos importantes de workingFee son nulos, cuando yo esperaría que se han asignado los valores introducidos por el usuario.

¿Fue útil?

Solución

He tenido un montón entero de temas controles que se unen a una propiedad expuesta con la simple {get; conjunto; } Notación ... El resto del código verá las propiedades, pero por alguna extraña razón, su vista no (siempre) se unen ...

Trate de escribir métodos get / set explícitas, como

private workingFee;
public Fee__c getWorkingFee() {
    return workingFee;
}

public void setWorkingFee(Fee__c value) {
    workingFee = value;
}

No hay ninguna razón lógica para que esto debería funcionar diferente a

public Fee__c workingFee { get; set; }

pero en mi experiencia, a veces se hace ...

lo que has dicho acerca de que sea repulsivo? ;)

Otros consejos

inmediata = verdadero / falso me ha mordido unas cuantas veces demasiado. Buena captura Ian.

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