Não estou conseguindo acessar meu cadastro de produtos em java com JSF e hibernate

4 respostas
well

pessoal está dando o seguinte erro…

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Cannot convert [javax.faces.model.SelectItem@743bcc, javax.faces.model.SelectItem@101e3da] of type class java.util.LinkedList to class javax.faces.model.SelectItem

javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)

org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)

root cause

java.lang.IllegalArgumentException: Cannot convert [javax.faces.model.SelectItem@743bcc, javax.faces.model.SelectItem@101e3da] of type class java.util.LinkedList to class javax.faces.model.SelectItem

org.apache.el.lang.ELSupport.coerceToType(ELSupport.java:380)

org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:188)

org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:101)

javax.faces.component.UISelectItem.getValue(UISelectItem.java:300)

com.sun.faces.renderkit.RenderKitUtils.getSelectItems(RenderKitUtils.java:304)

com.sun.faces.renderkit.html_basic.MenuRenderer.getOptionNumber(MenuRenderer.java:675)

com.sun.faces.renderkit.html_basic.MenuRenderer.renderSelect(MenuRenderer.java:793)

com.sun.faces.renderkit.html_basic.MenuRenderer.encodeEnd(MenuRenderer.java:335)

javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:836)

javax.faces.component.UIComponent.encodeAll(UIComponent.java:896)

javax.faces.render.Renderer.encodeChildren(Renderer.java:137)

javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:812)

javax.faces.component.UIComponent.encodeAll(UIComponent.java:886)

javax.faces.component.UIComponent.encodeAll(UIComponent.java:892)

com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:245)

com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:176)

com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)

com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)

com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)

javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)

org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)

mas nao sei mas onde mudar… ja tentei identificar o erro mas nao da certo… obrigado…

4 Respostas

wagner_a_lima

Você pode postar o seu ManagedBean?
Parece que você tenta montar um selectOneMenu (ou algo do tipo) onde os selectItens são do tipo LinkedList. É isto?

well

Aki está o productFace.java com a linkedList

package devMedia.faces;

import devMedia.dao.ProductDAO;

import devMedia.dao.UserDao;

import devMedia.entity.Product;

import devMedia.entity.User;

import java.util.LinkedList;

import java.util.List;

import javax.faces.model.SelectItem;

/**
*

  • @author Rafael
    */

public class ProductFace {

private List<Product> cacheProducts;
private ProductDAO prodDAO = new ProductDAO();
private Product selectedProduct;
private UserDao usrDAO = new UserDao();




/** Creates a new instance of ProductFace */
public ProductFace() {
}

public List<Product> getCacheProducts(){
    if (cacheProducts == null){
        cacheProducts = prodDAO.getProducts();
    }
    return cacheProducts;
}

public List<SelectItem>getUsersOfSystem(){
     List<SelectItem> toReturn = new LinkedList<SelectItem>();
     for (User usr : usrDAO.getUsers()) {
        toReturn.add(new SelectItem(usr,usr.getName()));
    }

     return toReturn;
    }

    


public String addNewProduct(){
    selectedProduct = new Product();
    return "gotoAddNewProduct";
}

public String finishAddNewProduct(){
    prodDAO.addProduct(selectedProduct);
    cacheProducts = null;
    return "gotoListProducts";
}

public String doRemoveProduct(){
    prodDAO.removeProduct(selectedProduct);
    cacheProducts = null;
    return "gotoListProducts";
}

public String doUpdateProduct(){
    return "gotoUpdateProduct";
}

public String finishUpdateProduct(){
    prodDAO.updateProduct(selectedProduct);
    cacheProducts = null;
    return "gotoListProducts";
}

public Product getSelectedProduct() {
    return selectedProduct;
}

public void setSelectedProduct(Product selectedProduct) {
    this.selectedProduct = selectedProduct;

}

}


e aki o JSF

Cadastrar Produtos

ID:
Nome:
Preço:
Estoque:
Dono:
</body>
finotti

well, o erro é o que o wagner disse.
vc está passando um LinkedList para o <h:selectOneMenu> e deveria passar uma collection de <SelectItem>
um exemplo:

<h:selectOneMenu value="#{relatorioListaPerfis.idProcesso}" layout="lineDirection" styleClass="select_2" id="comboProcesso"> <f:selectItems value="#{relatorioListaPerfis.listaProcessos}" /> </h:selectOneMenu>

no bean, itere seu LinkedList e transforme numa collection de <SelectItem>

public List<SelectItem> getListaProcessos() { List<SelectItem> itens = new ArrayList<SelectItem>(); itens.add(new SelectItem("", "")); for(Processo proc : this.processos){ itens.add(new SelectItem(proc.getId(), proc.getDescricao())); } return itens; }

well

Obrigado pelas respostas… ja esta revolvido… parabens pela diponibilidade de ajudar os outros…

Criado 14 de julho de 2009
Ultima resposta 14 de jul. de 2009
Respostas 4
Participantes 3