【问题标题】:How to inject one @Named bean in other @Named bean in JSF2?如何在 JSF2 中的另一个 @Named bean 中注入一个 @Named bean?
【发布时间】:2011-09-21 07:37:52
【问题描述】:

我有以下代码:

@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(){
        // ...
    }
}

我想在action() 方法中访问SearchBean.title... 怎么做?如何在我的 UI 控制器中注入这个 bean?

【问题讨论】:

    标签: jsf-2 cdi


    【解决方案1】:

    使用@Inject

    @Named("srchUI")
    @RequestScoped
    public class SearchUIController {
    
        @Inject
        private SearchBean searchBean;
    
        public String action(){
    
        }
    
    }
    

    【讨论】:

    • 你能解释一下这个答案吗?
    【解决方案2】:
    public class SearchUIController {
    
        @ManagedProperty(value = "#{searchBean}")
        private SearchBean searchBean;
    
        // .. setters and getters for the searchBean
    }
    

    getter-setter 是必要的。

    【讨论】:

    • 这只适用于@ManagedBean 类。 OP 正在使用 CDI @Named
    【解决方案3】:

    使用@Inject 并在注入的 bean 上添加 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{
      ....
    }
    

    【讨论】:

    • @Inject 不需要获取器/设置器。也许您对@ManagedProperty 感到困惑。
    • 就我而言,使用 get 和 set!但我不会尝试没有 get 和 Set .. 我现在就去做! ... 注意:我使用的是 eclipse+Wildfly+JAP(休眠)。所以.. 感谢您的反馈!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多