У меня есть список (с запросом), из которого пользователь может выбрать "PQ" (список ссылок). При щелчке или в противном случае в браузере отображается основная страница для каждого PQ. Каждая страница PQ имеет вид
 http://localhost:8080/projectname/main.jsf?id=2
Здесь сначала PQ bean:
@Named
@ViewScoped
public class PqHome implements Serializable
{
    @PersistenceContext(unitName="...")
    private EntityManager em;
    private Integer id;
    private PQ instance;
    @PostConstruct
    public void init()
    {
        System.out.println("ID is " + id); // ID from URL param
        instance = em.find(PQ.class, id);       
    }
    public Integer getId()
    {
        return id;
    }
    public void setId(Integer id)
    {
        this.id = id;
    }
    public PQ getInstance()
    {
        return instance;
    }
}
Здесь main.xhtml:
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
                ...>
  <ui:define name="metadata">
    <f:metadata>
      <f:viewParam name="id" value="#{pqHome.id}">
        <f:convertNumber integerOnly="#{true}" />
      </f:viewParam>
      <!--f:event type="preRenderView" listener="#{pqHome.init}" /-->
    </f:metadata>
  </ui:define>
  <ui:define name="title">
    <h:outputText value="Main" />
  </ui:define>
  ...
</ui:composition>
В любое время, когда я выбираю или иным образом обновляю страницу /URL, я получаю NullPointerException из EntityManager:
org.jboss.weld.exceptions.WeldException: WELD-000049 Unable to invoke [method] @PostConstruct public de.mycomp.myproj.beans.PqHome.init() on [email protected]
    at org.jboss.weld.bean.AbstractClassBean.defaultPostConstruct(AbstractClassBean.java:595)
...
Caused by: java.lang.IllegalArgumentException: id to load is required for loading
at org.hibernate.event.spi.LoadEvent.<init>(LoadEvent.java:87)
at org.hibernate.event.spi.LoadEvent.<init>(LoadEvent.java:59)
at org.hibernate.internal.SessionImpl.get(SessionImpl.java:961)
at org.hibernate.internal.SessionImpl.get(SessionImpl.java:957)
at org.hibernate.ejb.AbstractEntityManagerImpl.find(AbstractEntityManagerImpl.java:787)
at org.hibernate.ejb.AbstractEntityManagerImpl.find(AbstractEntityManagerImpl.java:762)
at org.jboss.as.jpa.container.AbstractEntityManager.find(AbstractEntityManager.java:221)
at de.mycomp.myproj.beans.PqHome.init(PqHome.java:47)
... 56 more
[Строка 47 - em.find(...)]
Линия
<f:event type="preRenderView" listener="#{pqHome.init}" />
не улучшает ситуацию. Теперь я довольно отчаянный.
Как вы получаете параметры запроса URL GET в @ViewScoped bean?
  Примечание. Я держу пари, что это не мелочь. Скорее всего, я делаю что-то неправильно здесь концептуально, поэтому любые советы о том, как улучшить, приветствуются. Я чувствовал, что мне нужно выбрать @ViewScoped, потому что на этой странице будет более сложный графический интерфейс на основе AJAX, который мне бы очень хотелось сохранить через параметры URL GET.
Спасибо
