Ola pessoa estou fazendo um totorial em ejb mais ao gravar no banco ele da o sequinte erro:
AVISO: /web/ordemProducao/Create.xhtml @19,303 value="#{ordemProducaoController.selected.ordemProducaoPK.idOrdem}": Target Unreachable, 'null' returned null
javax.el.PropertyNotFoundException: /web/ordemProducao/Create.xhtml @19,303 value="#{ordemProducaoController.selected.ordemProducaoPK.idOrdem}": Target Unreachable, 'null' returned null
at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:93)
at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:95)
at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1008)
at javax.faces.component.UIInput.validate(UIInput.java:934)
at javax.faces.component.UIInput.executeValidate(UIInput.java:1189)
at javax.faces.component.UIInput.processValidators(UIInput.java:691)
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1080)
at javax.faces.component.UIForm.processValidators(UIForm.java:243)
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1080)
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1080)
at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1180)
at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:76)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:312)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)
at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:325)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:226)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
at java.lang.Thread.run(Thread.java:619)
segue o bean
package beans;
import modelo.OrdemProducao;
import beans.util.JsfUtil;
import beans.util.PaginationHelper;
import dao.OrdemProducaoFacade;
import java.util.ResourceBundle;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import javax.faces.model.SelectItem;
@ManagedBean (name="ordemProducaoController")
@SessionScoped
public class OrdemProducaoController {
private OrdemProducao current;
private DataModel items = null;
@EJB private dao.OrdemProducaoFacade ejbFacade;
private PaginationHelper pagination;
private int selectedItemIndex;
public OrdemProducaoController() {
}
public OrdemProducao getSelected() {
if (current == null) {
current = new OrdemProducao();
selectedItemIndex = -1;
}
return current;
}
private OrdemProducaoFacade getFacade() {
return ejbFacade;
}
public PaginationHelper getPagination() {
if (pagination == null) {
pagination = new PaginationHelper(10) {
@Override
public int getItemsCount() {
return getFacade().count();
}
@Override
public DataModel createPageDataModel() {
return new ListDataModel(getFacade().findRange(new int[]{getPageFirstItem(), getPageFirstItem()+getPageSize()}));
}
};
}
return pagination;
}
public String prepareList() {
recreateModel();
return "List";
}
public String prepareView() {
current = (OrdemProducao)getItems().getRowData();
selectedItemIndex = pagination.getPageFirstItem() + getItems().getRowIndex();
return "View";
}
public String prepareCreate() {
current = new OrdemProducao();
selectedItemIndex = -1;
return "Create";
}
public String create() {
try {
getFacade().create(current);
JsfUtil.addSuccessMessage(ResourceBundle.getBundle("/Bundle").getString("OrdemProducaoCreated"));
return prepareCreate();
} catch (Exception e) {
JsfUtil.addErrorMessage(e, ResourceBundle.getBundle("/Bundle").getString("PersistenceErrorOccured"));
return null;
}
}
public String prepareEdit() {
current = (OrdemProducao)getItems().getRowData();
selectedItemIndex = pagination.getPageFirstItem() + getItems().getRowIndex();
return "Edit";
}
public String update() {
try {
getFacade().edit(current);
JsfUtil.addSuccessMessage(ResourceBundle.getBundle("/Bundle").getString("OrdemProducaoUpdated"));
return "View";
} catch (Exception e) {
JsfUtil.addErrorMessage(e, ResourceBundle.getBundle("/Bundle").getString("PersistenceErrorOccured"));
return null;
}
}
public String destroy() {
current = (OrdemProducao)getItems().getRowData();
selectedItemIndex = pagination.getPageFirstItem() + getItems().getRowIndex();
performDestroy();
recreateModel();
return "List";
}
public String destroyAndView() {
performDestroy();
recreateModel();
updateCurrentItem();
if (selectedItemIndex >= 0) {
return "View";
} else {
// all items were removed - go back to list
recreateModel();
return "List";
}
}
private void performDestroy() {
try {
getFacade().remove(current);
JsfUtil.addSuccessMessage(ResourceBundle.getBundle("/Bundle").getString("OrdemProducaoDeleted"));
} catch (Exception e) {
JsfUtil.addErrorMessage(e, ResourceBundle.getBundle("/Bundle").getString("PersistenceErrorOccured"));
}
}
private void updateCurrentItem() {
int count = getFacade().count();
if (selectedItemIndex >= count) {
// selected index cannot be bigger than number of items:
selectedItemIndex = count-1;
// go to previous page if last page disappeared:
if (pagination.getPageFirstItem() >= count) {
pagination.previousPage();
}
}
if (selectedItemIndex >= 0) {
current = getFacade().findRange(new int[]{selectedItemIndex, selectedItemIndex+1}).get(0);
}
}
public DataModel getItems() {
if (items == null) {
items = getPagination().createPageDataModel();
}
return items;
}
private void recreateModel() {
items = null;
}
public String next() {
getPagination().nextPage();
recreateModel();
return "List";
}
public String previous() {
getPagination().previousPage();
recreateModel();
return "List";
}
public SelectItem[] getItemsAvailableSelectMany() {
return JsfUtil.getSelectItems(ejbFacade.findAll(), false);
}
public SelectItem[] getItemsAvailableSelectOne() {
return JsfUtil.getSelectItems(ejbFacade.findAll(), true);
}
@FacesConverter(forClass=OrdemProducao.class)
public static class OrdemProducaoControllerConverter implements Converter {
private static final String SEPARATOR = "#";
private static final String SEPARATOR_ESCAPED = "\\#";
public Object getAsObject(FacesContext facesContext, UIComponent component, String value) {
if (value == null || value.length() == 0) {
return null;
}
OrdemProducaoController controller = (OrdemProducaoController)facesContext.getApplication().getELResolver().
getValue(facesContext.getELContext(), null, "ordemProducaoController");
return controller.ejbFacade.find(getKey(value));
}
modelo.OrdemProducaoPK getKey(String value) {
modelo.OrdemProducaoPK key;
String values[] = value.split(SEPARATOR_ESCAPED);
key = new modelo.OrdemProducaoPK();
key.setIdOrdem(Integer.parseInt(values[0]));
key.setMateriaPrimaIdMateria(Integer.parseInt(values[1]));
key.setProdutoAcabadoIdProdutoAcabado(Integer.parseInt(values[2]));
return key;
}
String getStringKey(modelo.OrdemProducaoPK value) {
StringBuffer sb = new StringBuffer();
sb.append(value.getIdOrdem());
sb.append(SEPARATOR);
sb.append(value.getMateriaPrimaIdMateria());
sb.append(SEPARATOR);
sb.append(value.getProdutoAcabadoIdProdutoAcabado());
return sb.toString();
}
public String getAsString(FacesContext facesContext, UIComponent component, Object object) {
if (object == null) {
return null;
}
if (object instanceof OrdemProducao) {
OrdemProducao o = (OrdemProducao) object;
return getStringKey(o.getOrdemProducaoPK());
} else {
throw new IllegalArgumentException("object " + object + " is of type " + object.getClass().getName() + "; expected type: "+OrdemProducaoController.class.getName());
}
}
}
}
segue o jsf
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<ui:composition template="/template.xhtml">
<ui:define name="title">
<h:outputText value="#{bundle.CreateOrdemProducaoTitle}"></h:outputText>
</ui:define>
<ui:define name="body">
<h:panelGroup id="messagePanel" layout="block">
<h:messages errorStyle="color: red" infoStyle="color: green" layout="table"/>
</h:panelGroup>
<h:form>
<h:panelGrid columns="2">
<h:outputLabel value="#{bundle.CreateOrdemProducaoLabel_ordemProducaoPK_idOrdem}" for="ordemProducaoPK_idOrdem" />
<h:inputText id="ordemProducaoPK_idOrdem" value="#{ordemProducaoController.selected.ordemProducaoPK.idOrdem}" title="#{bundle.CreateOrdemProducaoTitle_ordemProducaoPK_idOrdem}" required="false" requiredMessage="#{bundle.CreateOrdemProducaoRequiredMessage_ordemProducaoPK_idOrdem}"/>
<h:outputLabel value="#{bundle.CreateOrdemProducaoLabel_materiaPrima}" for="materiaPrima" />
<h:selectOneMenu id="materiaPrima" value="#{ordemProducaoController.selected.materiaPrima}" title="#{bundle.CreateOrdemProducaoTitle_materiaPrima}" required="true" requiredMessage="#{bundle.CreateOrdemProducaoRequiredMessage_materiaPrima}">
<f:selectItems value="#{materiaPrimaController.itemsAvailableSelectOne}"/>
</h:selectOneMenu>
<h:outputLabel value="#{bundle.CreateOrdemProducaoLabel_produtoAcabado}" for="produtoAcabado" />
<h:selectOneMenu id="produtoAcabado" value="#{ordemProducaoController.selected.produtoAcabado}" title="#{bundle.CreateOrdemProducaoTitle_produtoAcabado}" required="true" requiredMessage="#{bundle.CreateOrdemProducaoRequiredMessage_produtoAcabado}">
<f:selectItems value="#{produtoAcabadoController.itemsAvailableSelectOne}"/>
</h:selectOneMenu>
</h:panelGrid>
<br />
<h:commandLink action="#{ordemProducaoController.create}" value="#{bundle.CreateOrdemProducaoSaveLink}" />
<br />
<br />
<h:commandLink action="#{ordemProducaoController.prepareList}" value="#{bundle.CreateOrdemProducaoShowAllLink}" immediate="true"/>
<br />
<br />
<h:commandLink value="#{bundle.CreateOrdemProducaoIndexLink}" action="/index" immediate="true" />
</h:form>
</ui:define>
</ui:composition>
</html>
Algo esta retornando null, mais eu nao estou conseguindo ver onde eu estancio ele no controller