使用Postconstruct时,Primeffaces Picklist始终为空



下面的代码不起作用,我使用primefaces picklist和postconstruct注释来初始化带有try-catch块的方法。然而,我的picklistbean是空的,我尝试了所有的方法来让它工作,但都没有工作。有人能为我提供picklist的工作示例吗?或者在我的代码中我遗漏了什么吗?我已经为这个问题困扰了这么久,如果有人帮我,我会很高兴的。

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import org.primefaces.event.TransferEvent;
import org.primefaces.model.DualListModel;
import org.springframework.beans.factory.annotation.Autowired;

@ManagedBean(name = "pickListBeanTani")
@ViewScoped
public class PickListBeanTani implements Serializable {
/**
 * 
 */
private static final long serialVersionUID = 1L;
private DualListModel<TrvrTani> tanis;
@ManagedProperty(value = "#{TrvrTaniDAO}")
private TrvrTaniDAO tanidao;
public TrvrTaniDAO getTanidao() {
    return tanidao;
}

public void setTanidao(TrvrTaniDAO tanidao) {
    this.tanidao = tanidao;
}

private List<TrvrTani> sourcetani;
private List<TrvrTani> targettani;
@PostConstruct
public void init(){
    try {
        sourcetani = new ArrayList<TrvrTani>();
        targettani = new ArrayList<TrvrTani>();
        tanidao = new TrvrTaniDAO();
        List<TrvrTani> taniList = tanidao.findAll();
        System.out.println("tanılist" +taniList);
        for (TrvrTani tani : taniList) {
            sourcetani.add(new TrvrTani(tani.getTaniid(), tani.getTaniadi(), tani
                    .getTanikodu()));
        }
        tanis = new DualListModel<TrvrTani>(sourcetani, targettani);
    } catch (Exception e) {
        throw e;
    }
}

public List<TrvrTani> getSourcetani() {
    return sourcetani;
}
public void setSourcetani(List<TrvrTani> sourcetani) {
    this.sourcetani = sourcetani;
}
public List<TrvrTani> getTargettani() {
    return targettani;
}
public void setTargettani(List<TrvrTani> targettani) {
    this.targettani = targettani;
}
public DualListModel<TrvrTani> getTanis() {
    return tanis;
}
public void setTanis(DualListModel<TrvrTani> tanis) {
    this.tanis = tanis;
}

public void onTransferTani(TransferEvent event) {
    StringBuilder builder = new StringBuilder();
    for (Object item : event.getItems()) {
        builder.append(((TrvrTani) item).getTaniadi()).append("<br />");
        int tanisize = tanis.getTarget().size();
        System.out.println(" ************target*************  : "
                + tanis.getTarget().size());
        for (int h = 0; h < tanisize; h++) {
            /* elemanin adi, id si ve kodu */
            String taniadi = tanis.getTarget().get(h).getTaniadi();
            System.out.println(" ************taniadi1*************  : "
                    + taniadi);
            Long taniidp = tanis.getTarget().get(h).getTaniid();
            System.out.println(" ************taniid2*************  : "
                    + taniidp);
            String tanikodu = tanis.getTarget().get(h).getTanikodu();
            System.out.println(" ************tanikodu3*************  : "
                    + tanikodu);
        }
    }
    FacesMessage msgtani = new FacesMessage();
    msgtani.setSeverity(FacesMessage.SEVERITY_INFO);
    msgtani.setSummary("Tanı Eklendi");
    msgtani.setDetail(builder.toString());
    FacesContext.getCurrentInstance().addMessage(null, msgtani);
}
}

在PostContract中,您的dao类不会注入到您的bean中。当您想初始化bean中的某些内容时,请尝试preRenderView。

也不要在bean中使用tanidao = new TrvrTaniDAO();。TaniDao应通过弹簧注射Autowired

PreRenderView示例

编辑

此外,如果您应该使用jsf托管属性注入TrvrTaniDAO。

@ManagedProperty(value = "#{TrvrTaniDAO}")
private TrvrTaniDAO tanidao;

最新更新