проблема привязки данных inputField с VisualForce - PullRequest
4 голосов
/ 21 декабря 2009

У меня странные результаты на странице Visualforce (да, я знаю, Salesforce.com неприглядный). Моя проблема в том, что я пытаюсь использовать inputField для привязки данных к пользовательскому sObject, но в моем пользовательском контроллере он не распознает введенные пользователем данные.

Вот фрагмент кода со страницы:

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

а вот код с контроллера:

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

Я убедился, что свойство workingFee не равно нулю. Всякий раз, когда я нажимаю кнопку «Сохранить комиссию» после ввода значений, она перезагружает страницу и выдает мне сообщение «Ошибка: обязательные поля отсутствуют: [Fee__c]» (обратите внимание, здесь Fee__c - это поле валюты - это не так, ожидает, что это будет sObject, не так ли?)

Оператор отладки в методе saveFee () показывает, что важные поля workingFee являются нулевыми, когда я ожидал, что им были присвоены значения, введенные пользователем.

Ответы [ 2 ]

10 голосов
/ 21 декабря 2009

У меня была целая куча проблем, связывающих элементы управления со свойством, выставленным с помощью простого {get; задавать; } нотация ... Остальная часть вашего кода увидит свойства, но по какой-то странной причине ваш View не будет (всегда) связываться ...

Попробуйте написать явные методы get / set, например

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

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

Нет логической причины, почему это должно работать иначе, чем

public Fee__c workingFee { get; set; }

но по моему опыту, иногда бывает ...

что ты сказал о том, что это непристойно? ;)

0 голосов
/ 19 апреля 2012

Немедленно = ложь / истина, укусил меня тоже несколько раз. Хорошо поймать Яна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...