Jsf 2 未创建CDI对话实例

Jsf 2 未创建CDI对话实例,jsf-2,primefaces,cdi,Jsf 2,Primefaces,Cdi,我正在尝试开发一个web应用程序,在这个应用程序中,我需要对话范围在多个使用Primefaces 3.5的xhtml页面中使用相同的字符串值进行对话 当我使用conversation.begin开始对话时,它抛出null指针异常,对话为null 我知道我无法使用“new”创建对话实例。但我不知道我错在哪里,为什么它会变成空的 请导游 调用bean方法的xhtml片段: <p:column style="text-align: left" header

我正在尝试开发一个web应用程序,在这个应用程序中,我需要对话范围在多个使用Primefaces 3.5的xhtml页面中使用相同的字符串值进行对话

当我使用conversation.begin开始对话时,它抛出null指针异常,对话为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>

你在混合注释。因为您使用的是CDI,所以应该删除@ManagedBean注释,这可能是注入无法工作的原因。

我在问题的后面添加了@ManagedBean注释。即使没有这一点,我也要面对这个问题。我需要在配置或xml中添加一些内容吗?
@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";
}
}