0

こんにちは皆さん、私は jsf マネージド Bean と @PersistenceUnit に問題があります。私はこのコンバーターを使用しています

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.ConverterException;
import javax.faces.convert.FacesConverter;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.PersistenceUnit;
import mn.bsoft.crasmonclient.model.Customer;

/**
 *
 * @author D
 */
@ManagedBean
@RequestScoped
@FacesConverter(value="convertToConverter")
public class ConvertToCustomer  implements Converter{
    @PersistenceUnit(unitName = "CrasmonClientPU")
    private EntityManagerFactory entityManagerFactory;
    private EntityManager em;

    @Override
    public Object getAsObject(FacesContext context, UIComponent component, String value) {
        try {
            em = entityManagerFactory.createEntityManager();
            Object ret = em.find(Customer.class, new Integer(value));
            return ret;
        } catch (ConverterException e) {
            System.out.println(e.getFacesMessage());
        }  
        return null;
    }

    @Override
    public String getAsString(FacesContext context, UIComponent component, Object value) {
        try {
            Customer pa = (Customer) value;
            return String.valueOf(pa.getCustomerId());

        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
        return null;
    }

}

EntityManagerFactory で null ポインター例外が発生しました。私のfaces-configファイルには次のものがあります:

<converter>
<converter-id>convertToCustomer</converter-id>
<converter-class>crasmonclient.converter.ConvertToCustomer</converter-class>
</converter> 

私は何か見落としてますか?nullポインタを取得する理由がわかりません。

4

1 に答える 1

2

persistence.xmlWAR プロジェクトにファイルがあることを確認してください。また、同時に使用することはできませ@ManagedBean@FacesConverter。次のように、コンバーターを削除@FacesConverter<converter>て混乱を回避し、マネージド Bean としてのみコンバーターを使用する必要があります。

<h:inputText converter="#{convertToCustomer} />

@PersistenceContextさらに、直接注入しないのはなぜですか:

@PersistenceContext
EntityManager em;
于 2013-04-11T13:27:24.083 に答える