Как внедрить один бин @Named в другой бин @Named в JSF2? - PullRequest
3 голосов
/ 21 сентября 2011

У меня есть следующий код:

@Named
@RequestScoped
public class SearchBean{
    private String title;
    private String author;
    // .... getters and setter s
}

В search.xhtml У меня есть:

<h:inputText value="#{searchBean.title}" />
<h:commandButton action=#{srchUI.action}"/>

И у меня также есть следующий ControllerBean:

@Named("srchUI")
@RequestScoped
public class SearchUIController {
    public String action(){
        // ...
    }
}

Я хочу получить доступ к методу SearchBean.title in action() ... как это сделать? Как внедрить этот компонент в мой контроллер пользовательского интерфейса?

Ответы [ 3 ]

4 голосов
/ 21 сентября 2011

Использование @Inject.

@Named("srchUI")
@RequestScoped
public class SearchUIController {

    @Inject
    private SearchBean searchBean;

    public String action(){

    }

}
0 голосов
/ 04 сентября 2016

Используйте @Inject и добавьте методы Get и Set к вашему внедренному компоненту!

@Named(value = "postMB")
@SessionScoped
public class PostMB{
   // inject comments on your posts
   @Inject
   private CommentMB commentMB;


   /* ADD GET and SET Methods to commentMB*/
   public CommentBM getCommentMB(){return this.commentMB;}
   public void setCommentMB(CommentMB newMB){this.commentMB = newMB;}
}


@Named(value="commentMB")
@RequestScoped
public class CommentMB{
  ....
}
0 голосов
/ 21 сентября 2011
public class SearchUIController {

    @ManagedProperty(value = "#{searchBean}")
    private SearchBean searchBean;

    // .. setters and getters for the searchBean
}

Нужны геттеры-сеттеры.

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