Как перехватить исключение, выбрасываемое в установщике, связанном с вводом VisualForce?

У меня есть свойство, привязанное к SObject, например:

public Decimal latitude {
  get {
    return (Decimal)self.get('latitude__c');
  }
  set {
    self.put('latitude__c', value);
  }
}

На странице VisualForce у меня есть поле ввода, привязанное к этому свойству.

<apex:inputtext value="{!latitude}" />

Если я ввожу в это поле строку, например abc, в установщике есть исключение, но я не могу его поймать. Форма отправлена, ее действие не выполнено, но сообщения об ошибке нет. Как поймать эту ошибку?


person barelyknown    schedule 26.04.2012    source источник


Ответы (1)


Можете ли вы добавить некоторую проверку ошибок при отправке формы, которая будет проверять все входные данные, а затем отображать ошибку на странице?

Что-то типа

try{
   latitude = Decimal.valueOf(latitude);
}catch (exception e){
   ApexPages.addMessage(new ApexPages.Message(ApexPages.severity.Error, 'Invalid latitude entered!'));  
}

Может быть, даже поместите этот код в сеттер широты.

person Kirill Yunussov    schedule 26.04.2012
comment
Я использовал компонент пользовательского сообщения страницы вместо тега <apex:pagemessages />, и это было проблемой. Насколько я могу судить, нет способа поймать исключение во время отправки формы, и единственный подход, который работает, — это добавить <apex:pagemessages /> на страницу. Я согласен с тем, что проверка входных данных перед отправкой имеет смысл. - person barelyknown; 27.04.2012