2016-05-23 2 views
1

У меня есть форма в tml-файле компонента Гобелена.Подготовьтесь к отправке события, не названного в Гобелен

... 
<t:form t:id="searchForm" clientValidation="none"> 
    .... 
    <t:select t:id="globalSport" model="globalSportModel" value="formData.globalSportId" blankOption="never"/> 
    .... 
</t:form> 
.. 

А вот важная часть соответствующего файла Java:

... 
@Property(read = true, write = false) 
private ServiceSearchFormData formData; 
... 
@OnEvent(value = EventConstants.PREPARE_FOR_SUBMIT, component = "searchForm") 
void prepareForSubmit() 
{ 
    formData = new ServiceSearchFormData(); 
} 
... 

Это, кажется, довольно просто. ServiceSearchFormData - это DTO с несколькими атрибутами и методами getter/setter. Он инкапсулирует данные, представленные в форме. Экземпляр создается при событии «подготовиться к отправке». ... и он отлично работает.

Однако исключение иногда возникает в производственной среде. Я не могу воспроизвести его. Это происходит в рамках запроса POST, который передает данные в эту форму. В сообщении об ошибке указано:

Ошибка ввода параметра «значение» компонента MyPortal: portalindex.portalsearchform.globalsport: свойство 'formData' (в выражении свойства 'formData.globalSportId', из cz.ftm.fitsoftware.webapp.components. PortalSearchForm @ 3262579e) - null.

Как это возможно? Как может свойство formData быть неинициализированным? Может ли это редкое (но регулярное) исключение быть вызвано неправильным значением параметра t:formdata запроса POST?

Спасибо за любую помощь.

ответ

1

Исходя из этого много я могу видеть, я хотел бы попробовать две вещи, чтобы сузить проблему:

  1. Я уберет component = "searchForm" Классификатор

    @OnEvent(value = EventConstants.PREPARE_FOR_SUBMIT) 
    void prepareForSubmit() 
    { 
        formData = new ServiceSearchFormData(); 
    } 
    
  2. Я хотел бы удалить все другие аннотации @OnEvent, чтобы узнать, не произошло ли какое-либо из этих ласточек этого события:

    //@OnEvent(...) 
    void foo() {...}