Iniciante Primefaces Jsf 2.0

20 respostas
P

Pessoal, to tentando executar um exemplo do primefaces (da pagina deles mesmo), mas ta dando erro, segue o exemplo e o erro:

p/s Estou usando o Jsf 2.02 + Primefaces 2.2Rc2 + glassfish 3.01

menubar.xhtml

<h:form>  
  
    <p:growl id="messages"/>  
  
    <p:menubar autoSubmenuDisplay="true">  
        <p:submenu label="File" icon="ui-icon ui-icon-document">  
            <p:submenu label="New" icon="ui-icon ui-icon-contact">  
                <p:menuitem value="Project" url="#" helpText="CTRL+N" />  
                <p:menuitem value="Other" url="#" helpText="CTRL+O"/>  
            </p:submenu>  
            <p:menuitem value="Open" url="#" />  
            <p:menuitem value="Quit" url="#" />  
        </p:submenu>  
  
        <p:submenu label="Edit" icon="ui-icon ui-icon-pencil">  
            <p:menuitem value="Undo" url="#" icon="ui-icon ui-icon-arrowreturnthick-1-w" helpText="CTRL+Z"></p:menuitem>  
            <p:menuitem value="Redo" url="#" icon="ui-icon ui-icon-arrowreturnthick-1-e" helpText="CTRL+Y"></p:menuitem>  
        </p:submenu>  
  
        <p:submenu label="Help" icon="ui-icon ui-icon-help">  
            <p:menuitem value="Contents" url="#" />  
            <p:submenu label="Search" icon="ui-icon ui-icon-search">  
                <p:submenu label="Text">  
                    <p:menuitem value="Workspace" url="#" />  
                </p:submenu>  
                <p:menuitem value="File" url="#" />  
            </p:submenu>  
        </p:submenu>  
  
        <p:submenu label="Actions" icon="ui-icon ui-icon-gear">  
            <p:submenu label="Ajax" icon="ui-icon ui-icon-refresh">  
                <p:menuitem value="Save" actionListener="#{buttonBean.save}" icon="ui-icon ui-icon-disk" update="messages"/>  
                <p:menuitem value="Update" actionListener="#{buttonBean.update}" icon="ui-icon ui-icon-arrowrefresh-1-w" update="messages"/>  
            </p:submenu>  
            <p:submenu label="Non-Ajax" icon="ui-icon ui-icon-newwin">  
                <p:menuitem value="Delete" actionListener="#{buttonBean.delete}" icon="ui-icon ui-icon-close" update="messages" ajax="false"/>  
            </p:submenu>  
        </p:submenu>  
  
        <p:menuitem value="Quit" url="http://www.primefaces.org" icon="ui-icon ui-icon-close" />  
    </p:menubar>  
  
</h:form>

bean

package com.sisc.view;

import javax.faces.event.ActionEvent;
import javax.faces.context.FacesContext;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.inject.Named;
import javax.faces.bean.RequestScoped;

@Named(value = "buttonBean")
@RequestScoped
@ManagedBean
public class ButtonBean {

    public void save(ActionEvent actionEvent) {
        addMessage("Data saved");
    }

    public void update(ActionEvent actionEvent) {
        addMessage("Data updated");
    }

    public void delete(ActionEvent actionEvent) {
        addMessage("Data deleted");
    }

    public void addMessage(String summary) {
        FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, summary, null);
        FacesContext.getCurrentInstance().addMessage(null, message);
    }
}

Erro

GRAVE: Error Rendering View[/index.xhtml]
java.lang.ClassCastException: org.primefaces.component.menuitem.MenuItem cannot be cast to org.primefaces.component.submenu.Submenu
        at org.primefaces.component.menubar.MenubarRenderer.encodeMarkup(MenubarRenderer.java:91)
        at org.primefaces.component.menubar.MenubarRenderer.encodeEnd(MenubarRenderer.java:42)
        at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:878)
        at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1620)
        at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
        at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:848)
        at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1613)
        at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1616)
        at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1616)
        at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:380)
        at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:126)
        at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:273)
        at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:127)
        at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
        at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:313)
        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)

20 Respostas

B

O problema está ocorrendo pois a classe do PrimeFaces não está conseguindo converter o seu

<p:menuitem value=“Quit” url=“http://www.primefaces.org” icon=“ui-icon ui-icon-close” />

em SubMenu. Remova o p:menuitem, ou coloque ele dentro de um p:subMenu. Acredito que você tenha seguido o exemplo do site, porém lá eles utilizam outra versão.

P

é o exemplo do site sim, dei uma olhada e o que acontece e que no submenu eu nao consigo a opção de icon nem o <p:inputText/> pq ?, segue a info do rodapé deles : Running PrimeFaces-2.2-SNAPSHOT on Mojarra-2.0.4

P

nao sei o que ocorre mais muitos exemplo do prime estao com problema, testei esse aqui http://www.primefaces.org/showcase/ui/collector.jsf funciona ate certo ponto, pois nao adiciona na list, onde posso arrumar alguns exemplos???

R

tem coisa no showcase do primefaces que eles estão alterando, foi anunciado que hoje sairia uma nova lib, algumas coisas foi mudada, e ainda não foi liberada a nova lib, no caso o <p:inputText /> e <p:InputTextArea />
da datado para hoje 25/01 mas até agora nada… no twitter deles tem algumas info @primefaces, tenho um projeto que uso primefaces e estou a espera desses novos componentes.

P

hmm legal vou aguardar tambem vlw pessoal

P

Mais uma duvida estou implantando o controller, mas nao funciona certo , não puxa os valores cadastrados e ele subescreve o existente, segue os codigos.

&lt;?xml version='1.0' encoding='UTF-8' ?&gt;
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.prime.com.tr/ui"
      xmlns:f="http://java.sun.com/jsf/core"&gt;
    &lt;h:head&gt;
        &lt;title&gt;Facelet Title&lt;/title&gt;
        &lt;link type="text/css" rel="stylesheet" href="css/skin.css"/&gt;
    &lt;/h:head&gt;
    &lt;h:body&gt;
        &lt;h:form id="form"&gt;

            &lt;p:panel header="Cadastrar novo item" style="width: 30%"&gt;
                &lt;h:panelGrid columns="2"&gt;
                    &lt;h:outputLabel value="Descrição : *" for="txt_desc"&gt;&lt;/h:outputLabel&gt;
                    &lt;h:inputText id="txt_desc" value="#{itensController.item.descricao}"/&gt;

                    &lt;h:outputLabel value="Quantidade : *" for="txt_qtd"&gt;&lt;/h:outputLabel&gt;
                    &lt;h:inputText id="txt_qtd" value="#{itensController.item.quantidade}" /&gt;

                    &lt;h:outputLabel value="Valor : *" for="txt_valor"&gt;&lt;/h:outputLabel&gt;
                    &lt;h:inputText id="txt_valor" value="#{itensController.item.valor}" /&gt;

                    &lt;p:commandButton value="+" update="itens" action="#{itensController.reinit}" ajax="true" &gt;
                        &lt;p:collector value="#{itensController.item}" addTo="#{itensController.itens}" /&gt;
                    &lt;/p:commandButton&gt;

                &lt;/h:panelGrid&gt;
            &lt;/p:panel&gt;

            &lt;p:ajaxStatus style="width:16px;height:16px;"&gt;
                &lt;f:facet name="start"&gt;
                    &lt;h:graphicImage value="img/ajaxloading.gif" /&gt;
                &lt;/f:facet&gt;

                &lt;f:facet name="complete"&gt;
                    &lt;h:outputText value="" /&gt;
                &lt;/f:facet&gt;
            &lt;/p:ajaxStatus&gt;

            &lt;p:outputPanel id="itens" style=""&gt;
                &lt;p:dataTable value="#{itensController.itens}" var="book" style="width: 30%"&gt;

                    &lt;p:column&gt;
                        &lt;f:facet name="header"&gt;
                            &lt;h:outputText value="Descrição" /&gt;
                        &lt;/f:facet&gt;
                        &lt;h:outputText value="#{itensController.item.descricao}" /&gt;
                    &lt;/p:column&gt;

                    &lt;p:column&gt;
                        &lt;f:facet name="header"&gt;
                            &lt;h:outputText value="Valor" /&gt;
                        &lt;/f:facet&gt;
                        &lt;h:outputText value="#{itensController.item.valor}" /&gt;
                    &lt;/p:column&gt;

                    &lt;p:column&gt;
                        &lt;f:facet name="header"&gt;
                            &lt;h:outputText value="Quantidade" /&gt;
                        &lt;/f:facet&gt;
                        &lt;h:outputText value="#{itensController.item.quantidade}" /&gt;
                    &lt;/p:column&gt;

                    &lt;p:column&gt;
                        &lt;f:facet name="header"&gt;
                            &lt;h:outputText value="Operation" /&gt;
                        &lt;/f:facet&gt;
                        &lt;p:commandLink value="Remove" update="form:itens"&gt;
                            &lt;p:collector value="#{item}"  removeFrom="#{itensController.itens}" /&gt;
                        &lt;/p:commandLink&gt;
                    &lt;/p:column&gt;
                &lt;/p:dataTable&gt;
            &lt;/p:outputPanel&gt;

        &lt;/h:form&gt;
    &lt;/h:body&gt;
&lt;/html&gt;
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.sisc.view;

import com.sisc.bean.Itens;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Named;
import javax.enterprise.context.RequestScoped;
import javax.faces.bean.ManagedBean;

/**
 *
 * @author estagio.desenv
 */
@Named(value = "itensController")
@RequestScoped
@ManagedBean
public class ItensController {

    private Itens item = new Itens();
    private List&lt;Itens&gt; itens = new ArrayList&lt;Itens&gt;();

    public String reinit() {
        item = new Itens();
        return null;
    }

    public Itens getItem() {
        return item;
    }

    public void setItem(Itens item) {
        this.item = item;
    }

    public List&lt;Itens&gt; getItens() {
        return itens;
    }

    public void setItens(List&lt;Itens&gt; itens) {
        this.itens = itens;
    }
}
package com.sisc.bean;

/**
 *
 * @author estagio.desenv
 */
public class Itens {

    private String descricao;
    private double valor;
    private double quantidade;

    public Itens() {
    }

    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    public double getQuantidade() {
        return quantidade;
    }

    public void setQuantidade(double quantidade) {
        this.quantidade = quantidade;
    }

    public double getValor() {
        return valor;
    }

    public void setValor(double valor) {
        this.valor = valor;
    }
}

Desde ja agradeço

G

Olá,

Você conseguiu fazer o do FileUpload ou o do FileDownload? :smiley:

[]'s

P

nao tentei esse ainda, estou fazendo alguns testes pois vou montar um programa de compras (ou tentar), mas os exemplo do primefaces quase nunca funcionam meu deus, mas mesmo assim é uma otima ferramenta, ali no itenscontroller eu ja mudei o scoped pra session (Da pau ou nao adiciona nada) e Dependent (Não sei o que e isso direito =D)

G

Eu consegui adicionar quase todos os componentes, mas esse que você está utilizando eu ainda não vi, eu usei um DataTable, fica bonitão também. (y)

Esse fileUpload, eu estava dando uma olhada, mas estou quebrando a cabeça para integrar com JPA, para persistir a imagem no MySql como um BLOB. :cry:

[EDIT] Eu usei essa modalidade do componente DataTable: http://www.primefaces.org/showcase/ui/datatablePagination.jsf [/EDIT]

[]'s

P

da uma olhada nesse site me deu uma boa ajuda em algumas coisas

http://quebrandoparadigmas.wordpress.com/2010/07/06/file-upload-com-primefaces-e-jsf2/

R

Polverini. você tentou mudar com o escopo View ?
bom eu utilizei em um exemplo simple que fiz, parecido com o seu.
segue o link: http://migre.me/3Kogq

Polverini:
Mais uma duvida estou implantando o controller, mas nao funciona certo , não puxa os valores cadastrados e ele subescreve o existente, segue os codigos.

&lt;?xml version='1.0' encoding='UTF-8' ?&gt;
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.prime.com.tr/ui"
      xmlns:f="http://java.sun.com/jsf/core"&gt;
    &lt;h:head&gt;
        &lt;title&gt;Facelet Title&lt;/title&gt;
        &lt;link type="text/css" rel="stylesheet" href="css/skin.css"/&gt;
    &lt;/h:head&gt;
    &lt;h:body&gt;
        &lt;h:form id="form"&gt;

            &lt;p:panel header="Cadastrar novo item" style="width: 30%"&gt;
                &lt;h:panelGrid columns="2"&gt;
                    &lt;h:outputLabel value="Descrição : *" for="txt_desc"&gt;&lt;/h:outputLabel&gt;
                    &lt;h:inputText id="txt_desc" value="#{itensController.item.descricao}"/&gt;

                    &lt;h:outputLabel value="Quantidade : *" for="txt_qtd"&gt;&lt;/h:outputLabel&gt;
                    &lt;h:inputText id="txt_qtd" value="#{itensController.item.quantidade}" /&gt;

                    &lt;h:outputLabel value="Valor : *" for="txt_valor"&gt;&lt;/h:outputLabel&gt;
                    &lt;h:inputText id="txt_valor" value="#{itensController.item.valor}" /&gt;

                    &lt;p:commandButton value="+" update="itens" action="#{itensController.reinit}" ajax="true" &gt;
                        &lt;p:collector value="#{itensController.item}" addTo="#{itensController.itens}" /&gt;
                    &lt;/p:commandButton&gt;

                &lt;/h:panelGrid&gt;
            &lt;/p:panel&gt;

            &lt;p:ajaxStatus style="width:16px;height:16px;"&gt;
                &lt;f:facet name="start"&gt;
                    &lt;h:graphicImage value="img/ajaxloading.gif" /&gt;
                &lt;/f:facet&gt;

                &lt;f:facet name="complete"&gt;
                    &lt;h:outputText value="" /&gt;
                &lt;/f:facet&gt;
            &lt;/p:ajaxStatus&gt;

            &lt;p:outputPanel id="itens" style=""&gt;
                &lt;p:dataTable value="#{itensController.itens}" var="book" style="width: 30%"&gt;

                    &lt;p:column&gt;
                        &lt;f:facet name="header"&gt;
                            &lt;h:outputText value="Descrição" /&gt;
                        &lt;/f:facet&gt;
                        &lt;h:outputText value="#{itensController.item.descricao}" /&gt;
                    &lt;/p:column&gt;

                    &lt;p:column&gt;
                        &lt;f:facet name="header"&gt;
                            &lt;h:outputText value="Valor" /&gt;
                        &lt;/f:facet&gt;
                        &lt;h:outputText value="#{itensController.item.valor}" /&gt;
                    &lt;/p:column&gt;

                    &lt;p:column&gt;
                        &lt;f:facet name="header"&gt;
                            &lt;h:outputText value="Quantidade" /&gt;
                        &lt;/f:facet&gt;
                        &lt;h:outputText value="#{itensController.item.quantidade}" /&gt;
                    &lt;/p:column&gt;

                    &lt;p:column&gt;
                        &lt;f:facet name="header"&gt;
                            &lt;h:outputText value="Operation" /&gt;
                        &lt;/f:facet&gt;
                        &lt;p:commandLink value="Remove" update="form:itens"&gt;
                            &lt;p:collector value="#{item}"  removeFrom="#{itensController.itens}" /&gt;
                        &lt;/p:commandLink&gt;
                    &lt;/p:column&gt;
                &lt;/p:dataTable&gt;
            &lt;/p:outputPanel&gt;

        &lt;/h:form&gt;
    &lt;/h:body&gt;
&lt;/html&gt;
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.sisc.view;

import com.sisc.bean.Itens;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Named;
import javax.enterprise.context.RequestScoped;
import javax.faces.bean.ManagedBean;

/**
 *
 * @author estagio.desenv
 */
@Named(value = "itensController")
@RequestScoped
@ManagedBean
public class ItensController {

    private Itens item = new Itens();
    private List&lt;Itens&gt; itens = new ArrayList&lt;Itens&gt;();

    public String reinit() {
        item = new Itens();
        return null;
    }

    public Itens getItem() {
        return item;
    }

    public void setItem(Itens item) {
        this.item = item;
    }

    public List&lt;Itens&gt; getItens() {
        return itens;
    }

    public void setItens(List&lt;Itens&gt; itens) {
        this.itens = itens;
    }
}
package com.sisc.bean;

/**
 *
 * @author estagio.desenv
 */
public class Itens {

    private String descricao;
    private double valor;
    private double quantidade;

    public Itens() {
    }

    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    public double getQuantidade() {
        return quantidade;
    }

    public void setQuantidade(double quantidade) {
        this.quantidade = quantidade;
    }

    public double getValor() {
        return valor;
    }

    public void setValor(double valor) {
        this.valor = valor;
    }
}

Desde ja agradeço

P

Como view Scoped nao deu certo nao pois nao aparece nada na datatable, parece que nao ta adicionando nada, alguem tem mais alguma ideia ??

desde ja vlw

Edit: Mandei imprimir o size da List e descobri que simplismente nao aumenta fica do mesmo tamanho (1), ou seja não está mesmo incrementando nenhum item, e agora o que fazer ???

P

Pessoal depois de muito vi que nao era quase nada e sim funcionou com o View

segue os codigos

&lt;?xml version='1.0' encoding='UTF-8' ?&gt;
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.prime.com.tr/ui"
      xmlns:f="http://java.sun.com/jsf/core"&gt;
    &lt;h:head&gt;
        &lt;title&gt;Facelet Title&lt;/title&gt;
        &lt;link type="text/css" rel="stylesheet" href="css/skin.css"/&gt;
    &lt;/h:head&gt;
    &lt;h:body&gt;
        &lt;h:form id="form"&gt;

            &lt;p:panel header="Cadastrar novo item" style="width: 30%"&gt;
                &lt;h:panelGrid columns="2"&gt;
                    &lt;h:outputLabel value="Quantidade : " for="txt_qtd"&gt;&lt;/h:outputLabel&gt;
                    &lt;h:inputText id="txt_qtd" value="#{itensController.item.quantidade}"/&gt;

                    &lt;h:outputLabel value="UND : " for="txt_und"&gt;&lt;/h:outputLabel&gt;
                    &lt;h:inputText id="txt_und" style="text-transform:uppercase" value="#{itensController.item.und}" /&gt;

                    &lt;h:outputLabel value="Descrição : " for="txt_desc"&gt;&lt;/h:outputLabel&gt;
                    &lt;h:inputText id="txt_desc" style="text-transform:uppercase" value="#{itensController.item.descricao}"/&gt;

                    &lt;h:outputLabel value="Valor Unitário : " for="txt_valorUn"&gt;&lt;/h:outputLabel&gt;
                    &lt;h:inputText id="txt_valorUn" value="#{itensController.item.valorUn}" /&gt;

                    &lt;p:commandButton value="+" update="itens" action="#{itensController.save}" &gt;
                        &lt;p:collector value="#{itensController.item}" addTo="#{itensController.itens}" /&gt;
                    &lt;/p:commandButton&gt;

                &lt;/h:panelGrid&gt;
            &lt;/p:panel&gt;

            &lt;p:ajaxStatus style="width:16px;height:16px;"&gt;
                &lt;f:facet name="start"&gt;
                    &lt;h:graphicImage value="img/ajaxloading.gif" /&gt;
                &lt;/f:facet&gt;

                &lt;f:facet name="complete"&gt;
                    &lt;h:outputText value="" /&gt;
                &lt;/f:facet&gt;
            &lt;/p:ajaxStatus&gt;

            &lt;p:outputPanel id="itens" style=""&gt;
                &lt;p:dataTable value="#{itensController.itens}" rows="5" scrollable="true" var="item" style="width: 30%" emptyMessage="Nenhum item inserido"&gt;
                    &lt;p:column&gt;
                        &lt;f:facet name="header"&gt;
                            &lt;h:outputText value="Quantidade" /&gt;
                        &lt;/f:facet&gt;
                        &lt;h:outputText value="#{item.quantidade}" /&gt;
                    &lt;/p:column&gt;

                    &lt;p:column&gt;
                        &lt;f:facet name="header"&gt;
                            &lt;h:outputText value="UND" /&gt;
                        &lt;/f:facet&gt;
                        &lt;h:outputText value="#{item.und}" /&gt;
                    &lt;/p:column&gt;

                    &lt;p:column&gt;
                        &lt;f:facet name="header"&gt;
                            &lt;h:outputText value="Descrição do Produto" /&gt;
                        &lt;/f:facet&gt;
                        &lt;h:outputText value="#{item.descricao}" /&gt;
                    &lt;/p:column&gt;


                    &lt;p:column&gt;
                        &lt;f:facet name="header"&gt;
                            &lt;h:outputText value="Valor Unitátio" /&gt;
                        &lt;/f:facet&gt;
                        &lt;h:outputText value="#{item.valorUn}" /&gt;
                    &lt;/p:column&gt;

                    &lt;p:column&gt;
                        &lt;f:facet name="header"&gt;
                            &lt;h:outputText value="Valor Total" /&gt;
                        &lt;/f:facet&gt;
                        &lt;h:outputText value="#{item.valorTotal}" /&gt;
                    &lt;/p:column&gt;

                    &lt;p:column&gt;
                        &lt;f:facet name="header"&gt;
                            &lt;h:outputText value="Excluir" /&gt;
                        &lt;/f:facet&gt;
                        &lt;p:commandLink value="Excluir" update="form:itens"&gt;
                            &lt;p:collector value="#{item}"  removeFrom="#{itensController.itens}"  /&gt;
                        &lt;/p:commandLink&gt;
                    &lt;/p:column&gt;
                &lt;/p:dataTable&gt;
            &lt;/p:outputPanel&gt;

        &lt;/h:form&gt;
    &lt;/h:body&gt;
&lt;/html&gt;
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.sisc.view;

import com.sisc.bean.Itens;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

/**
 *
 * @author estagio.desenv
 */
@ViewScoped
@ManagedBean
public class ItensController {

    private Itens item = new Itens();
    private List&lt;Itens&gt; itens = new ArrayList&lt;Itens&gt;();

    public ItensController() {
    }

    public void save() {
        item = new Itens();
    }

    public Itens getItem() {
        return item;
    }

    public void setItem(Itens item) {
        this.item = item;
    }

    public List&lt;Itens&gt; getItens() {
        return itens;
    }

    public void setItens(List&lt;Itens&gt; itens) {
        this.itens = itens;
    }
}
package com.sisc.bean;

/**
 *
 * @author estagio.desenv
 */
public class Itens {

    private String descricao;
    private double valorUn;
    private double valorTotal;
    private double quantidade;
    private String und;

    public Itens() {
    }

    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao.toUpperCase();
    }

    public double getQuantidade() {
        return quantidade;
    }

    public void setQuantidade(double quantidade) {
        this.quantidade = quantidade;
    }

    public double getValorUn() {
        return valorUn;
    }

    public void setValorUn(double valorUn) {
        this.valorUn = valorUn;
    }

    public String getUnd() {
        return und;
    }

    public void setUnd(String und) {
        this.und = und.toUpperCase();
    }

    public double getValorTotal() {
        valorTotal = valorUn * quantidade;
        return valorTotal;
    }

    public void setValorTotal(double valorTotal) {
        this.valorTotal = valorTotal;
    }
}

pelo que eu vi o problema era o nome do bean pois eu estava marcando @Named, tirei e coloquei como @ViewScoped e sussa, obrigado a todos.

Abraços

R

seu metodo reinit está errado…
tente assim! e elimine o <p:collector />
bom testei ele e não deu certo uma outra vez, mas não afirmo porque não fiz vários testes.

public voidreinit() {  
       itens.add(item);
       item = new item();
  }
...
G

Polverini:
da uma olhada nesse site me deu uma boa ajuda em algumas coisas

http://quebrandoparadigmas.wordpress.com/2010/07/06/file-upload-com-primefaces-e-jsf2/

Obrigado pela atenção,

Eu já tinha visto esse pequeno tutorial, mas o meu problema é outro. Estou com dificuldade em colocar a imagem no escopo da Sessão. Eu possuo uma regra de negocio do JPA que está com um escopo de aplicação menor que o da Session, e eu estou desconfiado que a imagem deve estar neste escopo (Session), mas não vou atropelhar seu tópico. :smiley:

Vou continuar pesquisando, qualquer novidade, eu posto o código aqui.

[]'s

G

Olá,

Eu consegui resolver o problema do fileUpload, agora está funcionando. :smiley:

Como eu havia prometido, segue o código:

Imagem.java:

package modelo;

import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Lob;

/**
 *
 * @author HOUSE
 */
@Entity
public class Imagem implements Serializable {

    @Id
    @GeneratedValue
    private Long id;
    @Lob
    private byte [] foto;

    public byte[] getFoto() {
        return foto;
    }

    public void setFoto(byte[] foto) {
        this.foto = foto;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }
}

ImagemRepository.java:

package repositorios;

import javax.persistence.EntityManager;
import modelo.Imagem;

/**
 *
 * @author HOUSE
 */
public class ImagemRepository {



    private EntityManager entityManager;

    public ImagemRepository(EntityManager entityManager) {
        this.entityManager = entityManager;
    }

    public void adiciona(Imagem imagem) {
        this.entityManager.persist(imagem);
        this.entityManager.flush();
    }
}

FileUploadController.java:

package primefaces;

import java.util.logging.Level;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.servlet.ServletException;
import modelo.Imagem;
import org.primefaces.event.FileUploadEvent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import repositorios.ImagemRepository;

/**
 *
 * @author HOUSE
 */
@ManagedBean
@SessionScoped
public class FileUploadController {

    private EntityManagerFactory factory;
    private Logger logger = LoggerFactory.getLogger(FileUploadController.class);

    public void handleFileUpload(FileUploadEvent event) throws ServletException {
        logger.info("Uploaded: {}", event.getFile().getFileName());

        FacesMessage msg = new FacesMessage("Succesful", event.getFile().getFileName() + " is uploaded.");
        FacesContext.getCurrentInstance().addMessage(null, msg);
        byte[] foto = event.getFile().getContents();
        Imagem imagem = new Imagem();
        imagem.setFoto(foto); 

        this.factory = Persistence.createEntityManagerFactory(null);

        EntityManager entityManager = this.factory.createEntityManager();
        entityManager.getTransaction().begin();

        ImagemRepository img = new ImagemRepository(entityManager);
        img.adiciona(imagem);


        try {
            entityManager.getTransaction().commit();
        } catch (Exception e) {
            entityManager.getTransaction().rollback();
            throw new ServletException(e);
        } finally {
            entityManager.close();
        }
    }

foto.xhtml:

&lt;?xml version='1.0' encoding='UTF-8' ?&gt;
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.prime.com.tr/ui"&gt;
    &lt;h:head&gt;
        &lt;title&gt;Facelet Title&lt;/title&gt;
    &lt;/h:head&gt;
    &lt;h:body&gt;
        &lt;h:form&gt;
            &lt;p:fileUpload widgetVar="uploader" height="48" width="48"
                          fileUploadListener="#{fileUploadController.handleFileUpload}"
                          image="imagens/browse.png" cancelImage="images/cancel.png"
                          allowTypes="*.jpg;*.png;*.gif;*.mp3;" description="Images" customUI="true"/&gt;

            &lt;h:outputLink value="#" title="Upload" onclick="uploader.upload();"
                          style="font-weight:bold;color:#616D7E"&gt;
                Upload Files
            &lt;/h:outputLink&gt;
        &lt;/h:form&gt;
    &lt;/h:body&gt;
&lt;/html&gt;

FONTE 1: http://www.primefaces.org/showcase/ui/fileUploadSkinning.jsf
FONTE 2: k19-k12-desenvolvimento-web-com-jsf2-e-jpa2.pdf

[]'s

P

RedThi

o <p:controller /> é quem faz esse trabalho da inclusão, testei do seu jeito e funcionou tambem, obrigado pela ajuda e pela atenção.

getAdicted

Opa um bom exemplo para aprender (já que tambem vou usar), obrigado pelo exemplo e ajuda

L

Aproveitando a deixa do tópico iniciante… Estou precisando de ajuda com um outro tópico que criei…

Obrigado.

http://www.guj.com.br/java/231454-ajuda-com-css–jsf-20#1189286

F

Pessoal aproveitando que estão falando do Primefaces alguém sabe me dizer como coloco uma imagem de fundo na aplicação ou altero a cor de fundo??? Só acrescentando que estou usando o Skin Start do próprio Primeface.

Grato!!!

J

Eu implemente os menus do showcase do Primefaces e rodou quase tudo OK.
Mas em determinado momento tbem apareceu o mesmo erro q o seu, porém, do nada funcionou normals depois.

Achei bem estranho.

A unica q coisa q venho tendo problemas desde o começo, eh com relação às messages e ao growl.

ele me sempre me gera o erro outputScript with no library, no name, and no body content

Alguém me da uma força pra resolver isso. :smiley:

Criado 25 de janeiro de 2011
Ultima resposta 21 de fev. de 2011
Respostas 20
Participantes 7