1

SEAMとJBOSSを使用してWebベースのアプリケーションを作成しています。ドロップダウンボックス用のコンバーターを作成しようとしていますが、コンバータークラス内でentityManagerを使用すると、NullPointerExceptionが発生します。私はこの助けを理解しようと数日を費やしました、そしてどんな助けでもありがたいです

これが私のコードの一部です。もう必要な場合は、私に知らせてください:

コンバータークラス:

package edu.uwrf.iss.flowershop.entity;

import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.ConverterException;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import javax.servlet.ServletContext;
import javax.swing.JOptionPane;

import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Scope;

public class EmpConverter implements Converter {

@In
private EntityManager entityManager;

public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) {
    int num = Integer.parseInt(arg2);
    entityManager.refresh(getClass());
    Query query = entityManager.createQuery("SELECT e FROM FlowerStoreDelivery WHERE e.deliveryId LIKE :num")
                    .setParameter("num", num);
    JOptionPane.showMessageDialog(null, query.getResultList());
    FlowerStoreEmployee emp = entityManager.find(FlowerStoreEmployee.class, arg2);
    return emp;
}

public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) throws ConverterException {

return Integer.toString(((FlowerStoreEmployee)arg2).getEmployeeId());
}
}

そして、これはコンバーターが使用される場所です:

    <my:dropdown label="Employee ID" id="emp" value="#{deliveryPort.emp}"required="false">
                    <f:converter converterId="EmpConverter" />
                    <s:selectItems value="#{deliveryPort.empList}" var="emp" label="#{emp.employeeId} #{ emp.nameFirst}"/> 
                </my:dropdown>
4

2 に答える 2

0

none-Seamコンポーネントで@Inを使用することはできません。

あなたにできることは

public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) {
 EntityManager entityManager = (EntityManager) Component.getInstance("entityManager");
  ...
  ...
}
于 2012-06-07T14:35:13.797 に答える
-1

私は問題を理解しました。components.xmlファイルにコード行がありませんでした。ご回答ありがとうございます。

于 2012-06-07T15:12:42.677 に答える