CDI会话实例未创建

时间:2014-04-17 22:33:48

标签: jsf-2 primefaces cdi

我正在尝试开发一个Web应用程序,我需要Conversation范围在Primefaces 3.5的多个xhtml页面中继续使用相同的String值。

当我开始与conversation.begin()进行对话时,会抛出空指针异常,并且会话为null。

我知道我无法使用' new'创建对话实例。但我无法弄清楚我哪里出错了,为什么它会变成无效。

请指导。

调用bean方法的xhtml片段:

                    <p:column style="text-align: left" headerText="Deal ID"
                                width="30">
                                <p:commandLink value="#{selectedDealBean.getDealID()}"
                                    action="#{SearchBean.action(selectedDealBean.getDealID())}"
                                     process="@this" >
                                </p:commandLink>
                    </p:column>

bean的片段:

@Named()
@ManagedBean
@ConversationScoped
public class SearchBean implements Serializable {

@Inject
private Conversation conversation;

private DealBean selectedDealBean;
private String selectedID;

private SearchObject searchObj = new SearchObject();  

public void start() {
        this.conversation.begin();
}

public void end() {
        conversation.end();
}

public void submit() {
    System.out.println(selectedDealBean);
}

public String action(String selectedID) {
    String actionstatus = null;

    setSelectedID(selectedID);
    actionstatus = "/common/dealDisplay.xhtml?faces-redirect=true" ;

    start();

    return actionstatus;
}

public String onFinish() {
    end();

    return "/common/create.xhtml";
}
}

1 个答案:

答案 0 :(得分:0)

你正在混合注释。由于您正在使用CDI,因此应删除@ManagedBean注释,这可能是注入无效的原因。