Шов AutoCreate не работает?

Я пытаюсь вставить компонент шва в другой, автоматически создавая его. Но по какой-то причине вставленный компонент шва выбрасывает NPE.

XHTML

                   <a4j:commandLink id="cbrModal"
                                     action="#{detailAction.showInformation(1L)}"
                                     reRender="DetailModal"
                                     limitToList="true">
                        <h:outputText value="text"/>

                    </a4j:commandLink>

DetailActionBean.java

@Name("detailAction")
public class DetailActionBean implements Serializable {

    @In(create = true, required = false)
    @Out(required = false)
    private RulesValidator rulesValidator;

   public void showInformation(long id) {

                rulesValidator.setCheckCount(0); // rulesValidator == null here and throws npe

   }
)

RulesValidator.java

@AutoCreate
@Name("rulesValidator")
@Scope(ScopeType.SESSION)
public class RulesValidator implements Serializable {

    private int checkCount = 0;
    public void setCheckCount(int checkCount) {
        this.checkCount = checkCount;
    }


}

2 ответа

Решение

Seam будет сканировать базовый пакет и искать компоненты @Name, а затем эти компоненты автоматически подключаются. Я должен поместить файл seam.properties (пустой), чтобы seam знал, какие базовые пакеты нужно сканировать. Модуль, над которым я работал, имеет свойство seam.properties, поэтому RulesValidator не сканируется и не рассматривается как компонент шва. Следовательно autoCreate dint работает.

Обязательное false означает именно это. Если он еще не существует, он не будет создан, и вы должны это проверить. Autocreate просто означает, что вам не нужно определять create true в аннотации in.

Обновление комментариев: Да, seam будет автоматически создавать компонент при внедрении, если эта аннотация задана заранее. Но вы заявляете в инъекции, что это не требуется! Вот почему шов ничего не делает. Просто удалите все свойства вашего @In, и он должен работать. Значения по умолчанию - это то, что вы хотите.

Другие вопросы по тегам