2016-09-13 5 views
0

Макро может получить запрос путем инъекции из полезных нагрузок или непосредственно из диспетчера. Но что, если мне нужно использовать оба способа передачи запросов на тот же макрос? Если он содержит флаг @Inject, и запрос передается непосредственно из диспетчера, я получаю сообщение об ошибке «Отсутствие сопоставления для ввода в свойство».Различные способы передачи запроса на макрос

ответ

1

Итак, вы хотите иметь возможность отправить запрос на ваш Macro иногда через полезную нагрузку, а иногда и без нее. А во втором случае без отказов впрыска.

Для этого вы можете аннотировать свою собственность: @Optional(true) Таким образом, если отображение недоступно, инжектор не будет плакать.

Как вы можете догадаться, любая инъекция с аннотацией Optional не вызовет никакой ошибки, если в процессе инъекции отсутствует соответствующее сопоставление, потому что таким образом инъекция становится необязательной.

Вы можете посмотреть пример here

0

Было бы приятно видеть ваш пример, но если вы хотите, чтобы передать полезную нагрузку введенной зависимости, то оно должно быть переданы следующим образом:

dispatcher.dispatch(MyMessage.MESSAGE, [myRequest, new ExecutionPayload(myPayload, MyPayload)]) 

Так дело в том, что вам нужно для использования класса hex.control.payload.ExecutionPayload в качестве второго аргумента отправки. Но мне любопытно, почему бы вам не объединить их в один запрос.