cristianovieira 10 de out. de 2012
Olá bom dia, eu já havia tentado executar o método dessa forma:
< p : dataTable id = "dataTable" value = "#{produtoControle.listaTodos()}" var = "item" paginator = "true" rows = "9" paginatorTemplate = "{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" rowsPerPageTemplate = "5,10,15" >
Segue abaixo o erro retornado:
javax . servlet . ServletException : Error Parsing / livraria / frmListaProdutos . jspx : Error Traced [ line : 31 ] O conteúdo dos elementos deve consistir em dados ou marcação do caractere correto .
javax . faces . webapp . FacesServlet . service ( FacesServlet . java : 606 )
org . primefaces . webapp . filter . FileUploadFilter . doFilter ( FileUploadFilter . java : 79 )
org . springframework . web . filter . CharacterEncodingFilter . doFilterInternal ( CharacterEncodingFilter . java : 88 )
org . springframework . web . filter . OncePerRequestFilter . doFilter ( OncePerRequestFilter . java : 76 )
root cause
javax . faces . view . facelets . FaceletException : Error Parsing / livraria / frmListaProdutos . jspx : Error Traced [ line : 31 ] O conteúdo dos elementos deve consistir em dados ou marcação do caractere correto .
com . sun . faces . facelets . compiler . SAXCompiler . doCompile ( SAXCompiler . java : 417 )
com . sun . faces . facelets . compiler . SAXCompiler . doMetadataCompile ( SAXCompiler . java : 400 )
com . sun . faces . facelets . compiler . Compiler . metadataCompile ( Compiler . java : 130 )
com . sun . faces . facelets . impl . DefaultFaceletFactory . createMetadataFacelet ( DefaultFaceletFactory . java : 327 )
com . sun . faces . facelets . impl . DefaultFaceletFactory . access $ 200 ( DefaultFaceletFactory . java : 93 )
com . sun . faces . facelets . impl . DefaultFaceletFactory $ 2. newInstance ( DefaultFaceletFactory . java : 166 )
com . sun . faces . facelets . impl . DefaultFaceletFactory $ 2. newInstance ( DefaultFaceletFactory . java : 164 )
com . sun . faces . facelets . impl . DefaultFaceletCache $ 2. newInstance ( DefaultFaceletCache . java : 94 )
com . sun . faces . facelets . impl . DefaultFaceletCache $ 2. newInstance ( DefaultFaceletCache . java : 89 )
com . sun . faces . util . ExpiringConcurrentCache $ 1. call ( ExpiringConcurrentCache . java : 99 )
java . util . concurrent . FutureTask $ Sync . innerRun ( FutureTask . java : 334 )
java . util . concurrent . FutureTask . run ( FutureTask . java : 166 )
com . sun . faces . util . ExpiringConcurrentCache . get ( ExpiringConcurrentCache . java : 114 )
com . sun . faces . facelets . impl . DefaultFaceletCache . getViewMetadataFacelet ( DefaultFaceletCache . java : 143 )
com . sun . faces . facelets . impl . DefaultFaceletCache . getViewMetadataFacelet ( DefaultFaceletCache . java : 62 )
com . sun . faces . facelets . impl . DefaultFaceletFactory . getMetadataFacelet ( DefaultFaceletFactory . java : 260 )
com . sun . faces . facelets . impl . DefaultFaceletFactory . getMetadataFacelet ( DefaultFaceletFactory . java : 209 )
com . sun . faces . application . view . ViewMetadataImpl . createMetadataView ( ViewMetadataImpl . java : 114 )
com . sun . faces . lifecycle . RestoreViewPhase . execute ( RestoreViewPhase . java : 233 )
com . sun . faces . lifecycle . Phase . doPhase ( Phase . java : 101 )
com . sun . faces . lifecycle . RestoreViewPhase . doPhase ( RestoreViewPhase . java : 116 )
com . sun . faces . lifecycle . LifecycleImpl . execute ( LifecycleImpl . java : 118 )
javax . faces . webapp . FacesServlet . service ( FacesServlet . java : 593 )
org . primefaces . webapp . filter . FileUploadFilter . doFilter ( FileUploadFilter . java : 79 )
org . springframework . web . filter . CharacterEncodingFilter . doFilterInternal ( CharacterEncodingFilter . java : 88 )
org . springframework . web . filter . OncePerRequestFilter . doFilter ( OncePerRequestFilter . java : 76 )
LPJava 10 de out. de 2012
cristianovieira:
Olá bom dia, eu já havia tentado executar o método dessa forma:
< p : dataTable id = "dataTable" value = "#{produtoControle.listaTodos()}" var = "item" paginator = "true" rows = "9" paginatorTemplate = "{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" rowsPerPageTemplate = "5,10,15" >
Segue abaixo o erro retornado:
javax . servlet . ServletException : Error Parsing / livraria / frmListaProdutos . jspx : Error Traced [ line : 31 ] O conteúdo dos elementos deve consistir em dados ou marcação do caractere correto .
javax . faces . webapp . FacesServlet . service ( FacesServlet . java : 606 )
org . primefaces . webapp . filter . FileUploadFilter . doFilter ( FileUploadFilter . java : 79 )
org . springframework . web . filter . CharacterEncodingFilter . doFilterInternal ( CharacterEncodingFilter . java : 88 )
org . springframework . web . filter . OncePerRequestFilter . doFilter ( OncePerRequestFilter . java : 76 )
root cause
javax . faces . view . facelets . FaceletException : Error Parsing / livraria / frmListaProdutos . jspx : Error Traced [ line : 31 ] O conteúdo dos elementos deve consistir em dados ou marcação do caractere correto .
com . sun . faces . facelets . compiler . SAXCompiler . doCompile ( SAXCompiler . java : 417 )
com . sun . faces . facelets . compiler . SAXCompiler . doMetadataCompile ( SAXCompiler . java : 400 )
com . sun . faces . facelets . compiler . Compiler . metadataCompile ( Compiler . java : 130 )
com . sun . faces . facelets . impl . DefaultFaceletFactory . createMetadataFacelet ( DefaultFaceletFactory . java : 327 )
com . sun . faces . facelets . impl . DefaultFaceletFactory . access $ 200 ( DefaultFaceletFactory . java : 93 )
com . sun . faces . facelets . impl . DefaultFaceletFactory $ 2. newInstance ( DefaultFaceletFactory . java : 166 )
com . sun . faces . facelets . impl . DefaultFaceletFactory $ 2. newInstance ( DefaultFaceletFactory . java : 164 )
com . sun . faces . facelets . impl . DefaultFaceletCache $ 2. newInstance ( DefaultFaceletCache . java : 94 )
com . sun . faces . facelets . impl . DefaultFaceletCache $ 2. newInstance ( DefaultFaceletCache . java : 89 )
com . sun . faces . util . ExpiringConcurrentCache $ 1. call ( ExpiringConcurrentCache . java : 99 )
java . util . concurrent . FutureTask $ Sync . innerRun ( FutureTask . java : 334 )
java . util . concurrent . FutureTask . run ( FutureTask . java : 166 )
com . sun . faces . util . ExpiringConcurrentCache . get ( ExpiringConcurrentCache . java : 114 )
com . sun . faces . facelets . impl . DefaultFaceletCache . getViewMetadataFacelet ( DefaultFaceletCache . java : 143 )
com . sun . faces . facelets . impl . DefaultFaceletCache . getViewMetadataFacelet ( DefaultFaceletCache . java : 62 )
com . sun . faces . facelets . impl . DefaultFaceletFactory . getMetadataFacelet ( DefaultFaceletFactory . java : 260 )
com . sun . faces . facelets . impl . DefaultFaceletFactory . getMetadataFacelet ( DefaultFaceletFactory . java : 209 )
com . sun . faces . application . view . ViewMetadataImpl . createMetadataView ( ViewMetadataImpl . java : 114 )
com . sun . faces . lifecycle . RestoreViewPhase . execute ( RestoreViewPhase . java : 233 )
com . sun . faces . lifecycle . Phase . doPhase ( Phase . java : 101 )
com . sun . faces . lifecycle . RestoreViewPhase . doPhase ( RestoreViewPhase . java : 116 )
com . sun . faces . lifecycle . LifecycleImpl . execute ( LifecycleImpl . java : 118 )
javax . faces . webapp . FacesServlet . service ( FacesServlet . java : 593 )
org . primefaces . webapp . filter . FileUploadFilter . doFilter ( FileUploadFilter . java : 79 )
org . springframework . web . filter . CharacterEncodingFilter . doFilterInternal ( CharacterEncodingFilter . java : 88 )
org . springframework . web . filter . OncePerRequestFilter . doFilter ( OncePerRequestFilter . java : 76 )
vc leu direito o que eu falei?
cristianovieira 10 de out. de 2012
Sim, li entendi mas postei errado, segue abaixo o codigo alterado e o erro retornado:
< p : dataTable id = "dataTable" value = "#{produtoControle.listaTodos}" var = "item" paginator = "true" rows = "9" paginatorTemplate = "{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" rowsPerPageTemplate = "5,10,15" >
com . sun . faces . context . FacesFileNotFoundException : / livraria / livraria / frmListaProdutos . jspx Not Found in ExternalContext as a Resource
com . sun . faces . facelets . impl . DefaultFaceletFactory . resolveURL ( DefaultFaceletFactory . java : 232 )
com . sun . faces . facelets . impl . DefaultFaceletFactory . resolveURL ( DefaultFaceletFactory . java : 273 )
com . sun . faces . facelets . impl . DefaultFaceletFactory . getMetadataFacelet ( DefaultFaceletFactory . java : 209 )
com . sun . faces . application . view . ViewMetadataImpl . createMetadataView ( ViewMetadataImpl . java : 114 )
com . sun . faces . lifecycle . RestoreViewPhase . execute ( RestoreViewPhase . java : 233 )
com . sun . faces . lifecycle . Phase . doPhase ( Phase . java : 101 )
com . sun . faces . lifecycle . RestoreViewPhase . doPhase ( RestoreViewPhase . java : 116 )
com . sun . faces . lifecycle . LifecycleImpl . execute ( LifecycleImpl . java : 118 )
javax . faces . webapp . FacesServlet . service ( FacesServlet . java : 593 )
org . primefaces . webapp . filter . FileUploadFilter . doFilter ( FileUploadFilter . java : 79 )
org . springframework . web . filter . CharacterEncodingFilter . doFilterInternal ( CharacterEncodingFilter . java : 88 )
org . springframework . web . filter . OncePerRequestFilter . doFilter ( OncePerRequestFilter . java : 76 )
LPJava 10 de out. de 2012
a primeira linha do erro diz que nao encontrou o arquivo frmListaProdutos.jspx é isso mesmo? jspx ?
cristianovieira 10 de out. de 2012
To achando estranho a exception retornar algo relacionado ao FacesServlet, digo isso pois precisei adicionar o filter do do FileUpLoad para que funcione o Upload em outra tela, então segue abaixo o conteudo do web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"
xmlns= "http://java.sun.com/xml/ns/javaee" xmlns:web= "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation= "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id= "WebApp_ID" version= "2.5" >
<display-name> LivrariaDigital</display-name>
<context-param>
<param-name> contextConfigLocation</param-name>
<param-value> /WEB-INF/classes/META-INF/spring/root-context.xml</param-value>
</context-param>
<!-- -->
<context-param>
<param-name> javax.faces.DEFAULT_PREFIX</param-name>
<param-value> /livraria</param-value>
</context-param>
<context-param>
<param-name> javax.faces.DEFAULT_SUFFIX</param-name>
<param-value> .jspx</param-value>
</context-param>
<context-param>
<param-name> javax.faces.FACELETS_VIEW_MAPPINGS</param-name>
<param-value> *.jspx</param-value>
</context-param>
<context-param>
<param-name> primefaces.THEME</param-name>
<param-value> cupertino</param-value>
</context-param>
<listener>
<listener-class> br.com.livraria.arquitetura.util.FiegContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class> org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
<filter>
<filter-name> encoding-filter</filter-name>
<filter-class> org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name> encoding</param-name>
<param-value> UTF-8</param-value>
</init-param>
</filter>
<filter>
<filter-name> PrimeFaces FileUpload Filter</filter-name>
<filter-class> org.primefaces.webapp.filter.FileUploadFilter</filter-class>
</filter>
<filter-mapping>
<filter-name> PrimeFaces FileUpload Filter</filter-name>
<servlet-name> Faces Servlet</servlet-name>
</filter-mapping>
<filter-mapping>
<filter-name> encoding-filter</filter-name>
<url-pattern> /*</url-pattern>
</filter-mapping>
<context-param>
<param-name> com.sun.faces.writeStateAtFormEnd</param-name>
<param-value> false</param-value>
</context-param>
<servlet>
<servlet-name> Faces Servlet</servlet-name>
<servlet-class> javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup> 1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name> Faces Servlet</servlet-name>
<url-pattern> *.faces</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name> Faces Servlet</servlet-name>
<url-pattern> *.jspx</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name> Faces Servlet</servlet-name>
<url-pattern> *.xhtml</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name> appServlet</servlet-name>
<servlet-class> org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name> contextConfigLocation</param-name>
<param-value> /WEB-INF/classes/META-INF/spring/app/servlet-context.xml</param-value>
</init-param>
<load-on-startup> 1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name> appServlet</servlet-name>
<url-pattern> /spring/* </url-pattern>
</servlet-mapping>
<session-config>
<session-timeout> 30</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file> livraria/index.jspx</welcome-file>
<welcome-file> index.jsp</welcome-file>
<welcome-file> index.html</welcome-file>
</welcome-file-list>
</web-app>
Creio que a codificação do datagrid ta correta, não tenho mais opção para alteração.
cristianovieira 10 de out. de 2012
Exception com as alterações:
javax .servlet .ServletException : Error Parsing / livraria / frmListaProdutos .jspx : Error Traced [line : 31 ] O conte údo dos elementos deve consistir em dados ou marca ção do caractere correto .
javax .faces .webapp .FacesServlet .service ( FacesServlet .java :606 )
cristianovieira 10 de out. de 2012
Estive dando uma conversa com um pessoal daqui da empresa e o que me falaram é o seguinte:
Desenvolvimento jsp /jsf o que é comum fazer é colocar atributos dentro do controlador e no get deste atributo o sistema irá popular o objeto e devolver a lista para a camada de visão. Com isso eu teria o seguinte cenário:
No controlador eu adicionaria um arraylist:
public ArrayList<Produto> arrProdutos = new ArrayList<Produto>();
E no método getArrProdutos() eu iria na persistencia pegar os dados.
O que vocês acham disso ?? È normal isso acontecer ?? Desculpem a ignorancia desenvolvo com flex e o flex acessa via AMF o método de forma direta no codigo action script.
cristianovieira 10 de out. de 2012
FeedBack da solução - Troquei o nome do método do controle de listarProdutos para getListarProdutos…
Obrigado aos envolvidos.
grinche 10 de out. de 2012
Nunca popule uma lista direta pelo método get. Pois dependendo do seu scopo ele pode a cada requisição entrar neste método e popular novamente.
Uma forma seria é criar um método inicial e usar a anotação @PostConstruct para popular seus objetos.
thayson.silva 10 de out. de 2012
Boa noite tente o seguinte:
Na classe Bean
import java.util.ArrayList ;
import java.util.List ;
import javax.faces.bean.ManagedBean ;
import javax.faces.bean.RequestScoped ;
@ManagedBean ( name = "produtoControle" )
@RequestScoped
public class ProdutoBean {
private List < Produto > lista ;
public List < Produto > getLista () {
//aqui vc irá efetuar a busca no banco de dados e atribuir a variável lista criada acima.
return this . lista ;
}
}
depois basta subtituir a linha:
por:
grinche 11 de out. de 2012
thayson.silva:
Boa noite tente o seguinte:
Na classe Bean
import java.util.ArrayList ;
import java.util.List ;
import javax.faces.bean.ManagedBean ;
import javax.faces.bean.RequestScoped ;
@ManagedBean ( name = "produtoControle" )
@RequestScoped
public class ProdutoBean {
private List < Produto > lista ;
public List < Produto > getLista () {
//aqui vc irá efetuar a busca no banco de dados e atribuir a variável lista criada acima.
return this . lista ;
}
}
depois basta subtituir a linha:
por:
Isso é errado, a cada requisição que tu fizer a este ManagedBean o método get vai ser chamado, sendo assim vai ir ao banco carregar novamente a lista.
thayson.silva 14 de out. de 2012
Bom dia grinche,
Eu vi essa descrição no livro: Programação java para web,
como sou novato, gostaria que me informasse sobre essa correção pois estou fazendo assim:
public List < Categoria > getLista () {
if ( this . lista == null ){
CategoriaRN rn = new CategoriaRN ();
this . lista = rn . listar ( null ); //com o parametro null, a lista carrega todos os registros
}
return this . lista ;
}
Desde ja agradeço a informação