[RESOLVIDO] Dúvida sobre Validator (ExtJS 4 + Json + VRaptor 3.4.0)

93 respostas
G

Boa Noite a todos,

Estive lendo quase todos os tópicos referente a este assunto de validação retornando um Json para o ExtJS, mas infelizmente não sanei minhas dúvidas.
Realizei vários testes com todas as formas sugeridas em vários posts, até que cheguei em uma codificação que acredito estar mais perto doq preciso.
Apenas necessitando ajustar alguns detalhezinhos. :lol:

Um dos motivos que acredito serem responsáveis pelo meu insucesso, é por se tratar de tópicos antigos, da época que o VRaptor não tinha todos os recursos que tem hoje.

O Cenário é o seguinte: Tenho um formularios de Login, que chega na Controller sem problemas, realiza a validação utilizando validator.checking(), mas depois não consigo retornar um Json válido em caso de erro ou em caso de sucesso.

LoginController.java

@Get
	@Path("/")
	public void loginForm() {
		// Direciona para WEB-INF\jsp\login\loginForm.jsp
	}
	
	@Post
	@Path("/login")
	public void login(SegUsuario segUsuario) {
	    final SegUsuario usuarioLogado = segUsuarioDAO.carrega(segUsuario);
	    validator.checking(new Validations() {{
	    	that(usuarioLogado != null, "error", localization.getMessage("usuario.login"));
	    }});
	    validator.onErrorUse(ExtJSJson.class).from(validator.getErrors()).success(Boolean.FALSE).serialize();
	    usuarioWeb.login(usuarioLogado ); // AUTENTICANDO NA SESSAO O USUARIO LOGADO
	    result.use(ExtJSJson.class).from("").success().serialize();
	}

Este código na controller está gerando a seguinte saída no FireBug:

uncaught exception: You're trying to decode an invalid JSON String: {"data": [{"category": "error","message": "Usuýrio e/ou Senha invýlidos!","parameters": []}],"success": false}{"data": "","success": true}

Alguem poderia me auxiliar neste caso? De que forma devo proceder nestas situações em que meu JS está esperando um {success: true/false} p/ realizar as ações…

handler do botão de “Entrar no sistema”

function doLogin(){
            if(loginForm.getForm().isValid()) {
            	loginForm.getForm().submit({
                    method:'POST',
                    waitTitle: 'Efetuando login no sistema',
                    waitMsg: 'Verificando informações...',

                    success: function(){
                    	loginForm.getForm().reset();
                        var redirect = '/main';
                        window.location = redirect;
                    },

                    failure: function(form, action){
                        if(action.failureType === 'server'){
                            obj = Ext.decode(action.response.responseText);
                            Ext.Msg.show({
                                title : 'Falha no login!',
                                msg : obj.data[0].message,
                                buttons : Ext.Msg.OK,
                                icon : Ext.MessageBox.ERROR,
                                scope : this,
                                width : 150
                            });
                        }else{
                            Ext.Msg.alert('Atenção!', 'Não foi possível autenticar no sistema : ' + action.response.responseText);
                        }
                        loginForm.getForm().reset();
                    }
                });
            }
        };

Valeu pessoal.

93 Respostas

L

o json está sendo gerado duas vezes =(

acho que tem um bugzinho no onErrorUse(ExtJSon)

por enquanto faça o seguinte:

@Post  
    @Path("/login")  
    public void login(SegUsuario segUsuario) {  
        final SegUsuario usuarioLogado = segUsuarioDAO.carrega(segUsuario);  
        List<Message> errors = new Validations() {{  
            that(usuarioLogado != null, "error", localization.getMessage("usuario.login"));  
        }}.getErrors();  
        if (!errors.isEmpty()) {
             result.use(ExtJSJson.class).from(validator.getErrors()).success(Boolean.FALSE).serialize();  
        } else {
             usuarioWeb.login(usuarioLogado ); // AUTENTICANDO NA SESSAO O USUARIO LOGADO  
             result.use(ExtJSJson.class).from("").success().serialize();  
        }
    }

abre uma issue pra esse bug por favor?

G

Fala Lucas,

Brigadão pela ajuda, testei o sugerido e funcionou direitinho.

Abri a issue #403, mas não estou habituado a isto, então não sei se a fiz nos padrões necessários.

Até +

L

obrigado pela issue =)

a única coisa é que deveria estar em inglês, mas eu traduzo lá :wink:

abraços

R

Estou aqui de novo, mais ou menos pelo mesmo motivo, troquei o jar do vraptor para o mais recente, 3.4.1, em uma aplicação funcionou corretamente mas em outra está dando o seguinte erro no Json…tenho uma classe grupoTela e ela estende Tela, que estende TipoTela…em um dos campos uso, por exemplo grupoTela.tela.tipoTela, não sei se pode ser isso, no extJs aparece esse erro.

Uncaught Ext.Error: Unable to parse the JSON returned by the server: You’re trying to decode an invalid JSON String: {“data”: [{“id”: 9,“descricao”: “11”,“tipoMaterial”: {“id”: 19,“descricao”: “eddd”},“telas”: [true,

e no vraptor esse erro.

Caused by: com.thoughtworks.xstream.core.TreeMarshaller$CircularReferenceException: Recursive reference to parent object
---- Debugging information ----
item-type : org.cinemotion.entity.GrupoTela
converter-type : com.thoughtworks.xstream.converters.reflection.ReflectionConverter

obrigado.

L

o que mudou é que agora a gente configura o xstream para não ter references… então se vc tem um ciclo na arvore de objetos, dá esse erro (a referencia b que referencia a).

Teria que fazer um exclude da segunda referencia

R

Poderia exemplificar por favor?
esse é o metodo que insere e o que lista. Queria saber onde faço isso.

@Post
	@Path("/grupo/salvar")
	public void salvar(GrupoTela grupoTela, String itemselector) throws Exception {
		List<Tela> telas = new ArrayList<Tela>();
		String[] ids = itemselector.split(",");
		for (String t : ids) {
			Integer id = Integer.parseInt(t);
			telas.add(telaService.getById(id));
		}

	
		if (grupoTela != null) {
			if (grupoTela.getId() == null || grupoTela.getId() == 0) {
				// return telaService.insert(tela);
				if (grupoService.insert(grupoTela)) {
					result.use(ExtJSJson.class).from(grupoTela).success(true).serialize();
					return;
				}
			} else {
				// return telaService.update(tela);
				if (grupoService.update(grupoTela)) {
					result.use(ExtJSJson.class).from(grupoTela).success(true)
							.serialize();
					return;
				}
			}
		}

		result.use(ExtJSJson.class).from(grupoTela).success(false).serialize();
		// return false;
	}
Lista
@Path("/grupo/grid/dados.json")
	public void grid(int start, int limit) throws Exception {
		List<GrupoTela> base = grupoService.list();
		List<GrupoTela> grupos = new ArrayList<GrupoTela>();

		for (int k = start; (k < start + 10) && (k < base.size()); k++)
			grupos.add(base.get(k));

		result.use(ExtJSJson.class).from(grupos).serialize();
	}
L

a classe grupoTela referencia algum objeto que tem uma referencia pra um grupoTela?

tipo: grupoTela tem um atributo chamado bolinha e bolinha tem um atributo do tipo grupoTela?

R

Não, somente grupo tela tem a referencia.

O erro aconteceu quando mudei pro novo vraptor 3.4.1 pra parar com a referencia circular.

L

grupoTela.tela.tipoTela == grupoTela?

se sim, o xstream não vai conseguir se virar mto bem, só se tirar o modo de NO_REFERENCES dele (que corrige a maior parte dos problemas)

R

grupoTela.tela.tipoTela é pra chamar um atributo do tipo de tela…tipoTela é outra classe…que tela estende…
só me da problema nessa tela, as outras corrigiu a referencia circular direitinho.

L

o atributo é de outro tipo, mas o objeto que tá guardado lá é um grupoTela? é o mesmo grupoTela?

você pode tentar excluir esse atributo que está dando problemas… mas no caso do extJS vc vai precisar sobrescrever o componente. Quer fazer isso?

R

É o mesmo grupoTela sim, to dizendo isso pra vc…pq ACHO que seria o problema, nao tenho certeza, com o outor jar essa tela funcionava normal…mudei o JAR ela nem abre mais e da referencia circular.

L

se é o mesmo cara dá pau mesmo.

tenta fazer o exclude:

result.use(ExtJSJson.class).from(grupoTela).exclude("tela").success(false).serialize();

ou ainda:

result.use(ExtJSJson.class).from(grupoTela).exclude("tela.tipoTela").success(false).serialize();
R

Era pra colocar esse código no método de salvar né…se for…não deu certo…
creio que nao seja na hr de salvar, pois a lista já nem aparece tb…será que nãoi tem a ver com hibernate, alguma anotação, ja me falaram aqui pra ver se tem alguma lsita vindo EAGER, pra mudar pra LAZY…

L

esse exclude que eu te passei é pra evitar a circular reference… parou de dar esse erro?

R

Meu erro é esse…
You’re trying to decode an invalid JSON String: {“data”: [{“id”: 9,“descricao”: “11”,“tipoMaterial”: {“id”: 19,“descricao”: “eddd”},“telas”: [true,

L

mas dá algum erro no servidor?

se sim, pega o atributo que tá dando erro e tenta dar exclude nele

R

Da isso no console

10:42:48,308 DEBUG [DefaultExceptionMapper] find for exception class com.thoughtworks.xstream.core.TreeMarshaller$CircularReferenceException
Abr 19, 2012 10:42:48 AM org.apache.catalina.core.StandardWrapperValve invoke
Grave: Servlet.service() for servlet default threw exception
br.com.caelum.vraptor.InterceptionException: exception raised, check root cause for details: com.thoughtworks.xstream.core.TreeMarshaller$CircularReferenceException: Recursive reference to parent object
---- Debugging information ----
item-type : org.cinemotion.entity.GrupoTela
converter-type : com.thoughtworks.xstream.converters.reflection.ReflectionConverter

at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:96)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:48)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:71)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:93)
at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:83)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:69)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:44)
at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:91)
at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:58)
at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:88)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:378)
at org.springframework.security.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
at org.springframework.security.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
at org.springframework.security.ui.SessionFixationProtectionFilter.doFilterHttp(SessionFixationProtectionFilter.java:67)
at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
at org.springframework.security.ui.ExceptionTranslationFilter.doFilterHttp(ExceptionTranslationFilter.java:101)
at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
at org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter.doFilterHttp(SecurityContextHolderAwareRequestFilter.java:91)
at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
at org.springframework.security.ui.AbstractProcessingFilter.doFilterHttp(AbstractProcessingFilter.java:277)
at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
at org.springframework.security.ui.logout.LogoutFilter.doFilterHttp(LogoutFilter.java:89)
at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
at org.springframework.security.context.HttpSessionContextIntegrationFilter.doFilterHttp(HttpSessionContextIntegrationFilter.java:235)
at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
at org.springframework.security.util.FilterChainProxy.doFilter(FilterChainProxy.java:175)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)

Caused by: com.thoughtworks.xstream.core.TreeMarshaller$CircularReferenceException: Recursive reference to parent object
---- Debugging information ----
item-type : org.cinemotion.entity.GrupoTela
converter-type : com.thoughtworks.xstream.converters.reflection.ReflectionConverter

at com.thoughtworks.xstream.core.TreeMarshaller.convert(TreeMarshaller.java:63)
at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:58)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.marshallField(AbstractReflectionConverter.java:229)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$2.writeField(AbstractReflectionConverter.java:208)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$2.<init>(AbstractReflectionConverter.java:171)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doMarshal(AbstractReflectionConverter.java:116)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.marshal(AbstractReflectionConverter.java:72)
at com.thoughtworks.xstream.core.TreeMarshaller.convert(TreeMarshaller.java:70)
at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:58)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.marshallField(AbstractReflectionConverter.java:229)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$2.writeField(AbstractReflectionConverter.java:208)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$2.<init>(AbstractReflectionConverter.java:171)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doMarshal(AbstractReflectionConverter.java:116)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.marshal(AbstractReflectionConverter.java:72)
at com.thoughtworks.xstream.core.TreeMarshaller.convert(TreeMarshaller.java:70)
at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:58)
at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:43)
at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.writeItem(AbstractCollectionConverter.java:64)
at com.thoughtworks.xstream.converters.collections.CollectionConverter.marshal(CollectionConverter.java:55)
at com.thoughtworks.xstream.core.TreeMarshaller.convert(TreeMarshaller.java:70)
at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:58)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.marshallField(AbstractReflectionConverter.java:229)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$2.writeField(AbstractReflectionConverter.java:208)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$2.<init>(AbstractReflectionConverter.java:171)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doMarshal(AbstractReflectionConverter.java:116)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.marshal(AbstractReflectionConverter.java:72)
at com.thoughtworks.xstream.core.TreeMarshaller.convert(TreeMarshaller.java:70)
at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:58)
at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:43)
at com.thoughtworks.xstream.core.TreeMarshaller.start(TreeMarshaller.java:82)
at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.marshal(AbstractTreeMarshallingStrategy.java:37)
at com.thoughtworks.xstream.XStream.marshal(XStream.java:894)
at com.thoughtworks.xstream.XStream.marshal(XStream.java:883)
at com.thoughtworks.xstream.XStream.toXML(XStream.java:856)
at br.com.caelum.vraptor.serialization.xstream.XStreamSerializer.serialize(XStreamSerializer.java:142)
at br.com.caelum.vraptor.util.extjs.DefaultExtJson.serialize(DefaultExtJson.java:89)
at org.cinemotion.controller.GrupoTvController.grid(GrupoTvController.java:44)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:61)
... 66 more
L

mesmo com o exclude nas propriedades? vai tentando excluir até vc achar qual tá dando pau…

provavelmente é o atributo tela.

R

Coloquei o exclude nesse método!

@Post
	@Path("/grupo/salvar")
	public void salvar(GrupoTela grupoTela, String itemselector) throws Exception {
		List<Tela> telas = new ArrayList<Tela>();
		String[] ids = itemselector.split(",");
		for (String t : ids) {
			Integer id = Integer.parseInt(t);
			telas.add(telaService.getById(id));
		}

	
		if (grupoTela != null) {
			if (grupoTela.getId() == null || grupoTela.getId() == 0) {
				// return telaService.insert(tela);
				if (grupoService.insert(grupoTela)) {
					result.use(ExtJSJson.class).from(grupoTela).exclude("telas").success(false).serialize();
					return;
				}
			} else {
				// return telaService.update(tela);
				if (grupoService.update(grupoTela)) {
					result.use(ExtJSJson.class).from(grupoTela).success(true)
							.serialize();
					return;
				}
			}
		}

		result.use(ExtJSJson.class).from(grupoTela).success(false).serialize();
		// return false;
	}

Colocaria onde, testei em vários lugares...seria nesse metodo mesmo né? Obrigado.

L

sim, mas vc precisa colocar em todos os casos, vc colocou só em um.

R

Ok o método ficou assim..está correto agora?

@Post
	@Path("/grupo/salvar")
	public void salvar(GrupoTela grupoTela, String itemselector) throws Exception {
		List<Tela> telas = new ArrayList<Tela>();
		String[] ids = itemselector.split(",");
		for (String t : ids) {
			Integer id = Integer.parseInt(t);
			telas.add(telaService.getById(id));
		}

	
		if (grupoTela != null) {
			if (grupoTela.getId() == null || grupoTela.getId() == 0) {
				// return telaService.insert(tela);
				if (grupoService.insert(grupoTela)) {
					result.use(ExtJSJson.class).from(grupoTela).exclude("telas").success(true).serialize();
					return;
				}
			} else {
				// return telaService.update(tela);
				if (grupoService.update(grupoTela)) {
					result.use(ExtJSJson.class).from(grupoTela).exclude("telas").success(true)
							.serialize();
					return;
				}
			}
		}

		result.use(ExtJSJson.class).from(grupoTela).exclude("telas").success(false).serialize();
		// return false;
	}
L

funcionou?

R

Lucas, o mesmo erro ainda.

L

então não é essa propriedade que tá dando problema… tenta ver com outras (só as que forem classes da sua aplicação ou listas)

R

Tentei ela tem tipoMaterial e uma lista de telas…ja tentei as duas e não deu certo.

L

posta aqui a sua classe GrupoTela (só os atributos) e as classes mãe dela tb, plz

R
grupoTela
public class GrupoTela implements Serializable{

	
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue
	@Column(name = "id_grupo")
	private Integer id;
	
	@Column(name = "ds_grupo")
	private String descricao;
	
	@ManyToOne(fetch=FetchType.EAGER)
	private TipoMaterial tipoMaterial;
	
	@org.hibernate.annotations.Cascade(value=org.hibernate.annotations.CascadeType.ALL)
	@OneToMany(fetch=FetchType.EAGER)
	private List<Tela> telas;

Tela
anotations estão nos gets.

private static final long serialVersionUID = 1L;
	private Integer id;
	private TipoTela tipoTela;
	private String nome;
	private String enderecoIp;

TipoMaterial

private static final long serialVersionUID = 1L;
	private Integer id;
	private String descricao;
L

tenta colocar com um data na frente:

...exclude("data.telas")
ou
..exclude("data.tipoMaterial")
R

Tentei isso com os dois e não deu...

if (grupoService.insert(grupoTela)) {
					result.use(ExtJSJson.class).from(grupoTela).exclude("data.tipoMaterial").success(false).serialize();
					return;
				}
			} else {
				// return telaService.update(tela);
				if (grupoService.update(grupoTela)) {
					result.use(ExtJSJson.class).from(grupoTela).exclude("data.tipoMaterial").success(false)
							.serialize();
					return;
				}
			}
		}

		result.use(ExtJSJson.class).from(grupoTela).exclude("data.tipoMaterial").success(false).serialize();
		// return false;
L

faz esse teste então:

-copie essa classe pra sua aplicação:

e então faça:

ExtJSWrapper wrapper = new ExtJSWrapper(grupoTela);
wrapper.setSuccess(true);
result.use(Results.json()).withoutRoot().from(wrapper).include("data").serialize();

veja se funciona

R

Blz ma sonde coloco esse trecho? tiro alguma coisa e ponho isso no lugar?
no metodo salvar isso? obrigado.

ExtJSWrapper wrapper = new ExtJSWrapper(grupoTela); wrapper.setSuccess(true); result.use(Results.json()).withoutRoot().from(wrapper).include("data").serialize();

L

sim, substituindo o result.use que tá lá

R

Ok valeu, substitui e não deu certo!
deveria ficar assim o metodo?

if (grupoTela != null) {
			if (grupoTela.getId() == null || grupoTela.getId() == 0) {
				// return telaService.insert(tela);
				if (grupoService.insert(grupoTela)) {
					ExtJSWrapper wrapper = new ExtJSWrapper(grupoTela);    
					wrapper.setSuccess(true);    
					result.use(Results.json()).withoutRoot().from(wrapper).include("data").serialize();  
					return;
				}
			} else {
				// return telaService.update(tela);
				if (grupoService.update(grupoTela)) {
					ExtJSWrapper wrapper = new ExtJSWrapper(grupoTela);    
					wrapper.setSuccess(true);    
					result.use(Results.json()).withoutRoot().from(wrapper).include("data").serialize();  
					return;
				}
			}
		}

		ExtJSWrapper wrapper = new ExtJSWrapper(grupoTela);    
		wrapper.setSuccess(true);    
		result.use(Results.json()).withoutRoot().from(wrapper).include("data").serialize();  
		// return false;
	}
L

qual json ele tá gerando agora?

R

O mesmo {“data”: [{“id”: 9,“descricao”: “11”,“tipoMaterial”: {“id”: 19,“descricao”: “eddd”},“telas”: [true,
o erro aparece logo quando carrega a aplicação, nao preciso nem entrar na tela de grupo…
então lucas, essa sua solução é para o 3.4.0? estou usando o 3.4.1.

L

cara, tem algo de errado…
com a mudança que eu te passei ele não deveria mais tentar serializar o tipoMaterial nem a telas, acho que vc tá mudando no lugar errado.

tem certeza que o cara que tá gerando esse json é o método salvar?

R

Blz Lucas, vou tentar em um metodo de cada vez ok.

já te retorno.

R

Lucas houve uma mudança boa aqui mas não 100% ainda, coloquei no metodo de listar!

ficou assim:

@Path("/grupo/grid/dados.json")
	public void grid(int start, int limit) throws Exception {
		List<GrupoTela> base = grupoService.list();
		List<GrupoTela> grupos = new ArrayList<GrupoTela>();

		for (int k = start; (k < start + 10) && (k < base.size()); k++)
			grupos.add(base.get(k));

		ExtJSWrapper wrapper = new ExtJSWrapper(grupos);    
		wrapper.setSuccess(true);    
		result.use(Results.json()).withoutRoot().from(wrapper).include("data").serialize();  
	}
agora abre o modal mas a lista vem em branco..e o json gerado é esse {"success": true}
L

mude para aquilo que eu tinha te falado antes então:

result.use(ExtJSJson.class).from(grupos).exclude("tipoMaterial").success(true).serialize();

se não funcionar, tente as outras versões que eu te passe. Se não funcionar ainda, tente fazer com o exclude em list.tipoMaterial ou list.telas, ou data.telas, ou data.tipoMaterial.

R

Lucas continua a mesma coisa, a tela vem em branco, mas usando isso:

é a unica hora que nao da erro, nas outras list.telas…e por ae vai…da erro…diz que nao existe…

e com esse trecho tb gera o json sem trazer as telas…

{“data”: [{“id”: 9,“descricao”: “11”,“tipoMaterial”: {“id”: 19,“descricao”: “eddd”}},{“id”: 10,“descricao”: “elaia”,“tipoMaterial”:…e por ae vai…

mas na tela continua vindo em branco…a e traz esse erro no console…

Uncaught TypeError: Cannot read property ‘id’ of undefined

R

Alguem?

L

tenta excluir então o telas.tipoMaterial só

R

Consigo fazer aparecer a lista já, mas quando dou um exclude ele nao tras os registros excluidos certo?
e assim quando clico em editar ele tb nao vem com os registros, nao tem outro jeito a nao ser pelo exclude?

obrigado.

L

vc tá excluindo a referência circular do json, isso precisa ser feito…

Algum problema em fazer isso?

R

Lucas nao sei se sou o unico com esse problema com VRAPTOR+EXTJS, mas mudando pra versão nova do vraptor, as listas vem com todos os atributos da classe associada!

a classe grupo tela estava trazendo todos os atributos da classe tela, e não somente os que eu chamava na tela, dai dava erro, eu dei exclude em um por um e deu certo, obrigado pela ajuda, se mais alguem passar por isso, já tem algo, ou até se for o caso em uma nova versão do vraptor…com a outra versão mais antiga isso nao ocorria, valeu Lucas, resolvido aqui essa questão…

abraço

R

Lucas consegui fazer aparecer a lista e tals mas nao consigo trazer as telas, da o seguinte erro quando clico em editar.

br.com.caelum.vraptor.VRaptorException: Unable to find converter for org.cinemotion.entity.GrupoTela

<a href="http://br.com.caelum.vraptor.core.DefaultConverters.to">br.com.caelum.vraptor.core.DefaultConverters.to</a>(DefaultConverters.java:59)

br.com.caelum.vraptor.http.ognl.VRaptorConvertersAdapter.convert(VRaptorConvertersAdapter.java:59)

br.com.caelum.vraptor.http.ognl.OgnlParametersProvider.convert(OgnlParametersProvider.java:179)

br.com.caelum.vraptor.http.ognl.OgnlParametersProvider.createSimpleParameter(OgnlParametersProvider.java:175)

br.com.caelum.vraptor.http.ognl.OgnlParametersProvider.createRoot(OgnlParametersProvider.java:145)

br.com.caelum.vraptor.http.ognl.OgnlParametersProvider.createParameter(OgnlParametersProvider.java:123)

br.com.caelum.vraptor.http.ognl.OgnlParametersProvider.getParametersFor(OgnlParametersProvider.java:86)

br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.getParametersFor(ParametersInstantiatorInterceptor.java:126)

br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:83)

br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59)

br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:71)

br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)

br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:69)

br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)

br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)

br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:44)

br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:91)

br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:58)

br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:88)

org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:378)

org.springframework.security.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)

org.springframework.security.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)

org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)

org.springframework.security.ui.SessionFixationProtectionFilter.doFilterHttp(SessionFixationProtectionFilter.java:67)

org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)

org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)

org.springframework.security.ui.ExceptionTranslationFilter.doFilterHttp(ExceptionTranslationFilter.java:101)

org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)

org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)

org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter.doFilterHttp(SecurityContextHolderAwareRequestFilter.java:91)

org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)

org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)

org.springframework.security.ui.AbstractProcessingFilter.doFilterHttp(AbstractProcessingFilter.java:277)

org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)

org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)

org.springframework.security.ui.logout.LogoutFilter.doFilterHttp(LogoutFilter.java:89)

org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)

org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)

org.springframework.security.context.HttpSessionContextIntegrationFilter.doFilterHttp(HttpSessionContextIntegrationFilter.java:235)

org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)

org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)

org.springframework.security.util.FilterChainProxy.doFilter(FilterChainProxy.java:175)

org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)

org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
L

grupoTela é uma enum? Se não, vc não pode ter um parâmetro de request direto pra grupoTela. Exemplo (chave=valor, onde chave é o nome do input):

tela.grupoTela=Alguma coisa

vc precisa popular algum atributo do grupoTela:

tela.grupoTela.atributo=Alguma coisa

ou criar um Converter pra GrupoTela.

R

Lucas, Tela não tem nenhum atributo booleno e mesmo assim ta vindo assim por JSON.

telas: [true, -1, org.cinemotion.entity.GrupoTela.telas, false]

o que pode ser?

L

é pq o hibernate não retorna uma collection bem comportada.

se vc tá serializando via result.use(…json()), crie essa classe: http://www.guj.com.br/java/255223-vraptor--hibernate--onetomany#1328498
(PersistentBagConverter)

se for ExtJS:

http://groups.google.com/group/caelum-vraptor/browse_thread/thread/ce18f00a7d878187

dá uma olhada na msg do José Maria de Oliveira, e copie a SuaClasseJSON pro seu projeto. Deve resolver.

R

Deu esse erro criando a classe pro result.

Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘XStreamConverters’: Unsatisfied dependency expressed through constructor argument with index 0 of type [java.util.List]: : Error creating bean with name ‘persistentBagConverter’: Unsatisfied dependency expressed through constructor argument with index 0 of type [br.com.caelum.vraptor.serialization.xstream.XStreamBuilder]: : Error creating bean with name ‘XStreamBuilderImpl’: Requested bean is currently in creation: Is there an unresolvable circular reference?; nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name ‘XStreamBuilderImpl’: Requested bean is currently in creation: Is there an unresolvable circular reference?; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘persistentBagConverter’: Unsatisfied dependency expressed through constructor argument with index 0 of type [br.com.caelum.vraptor.serialization.xstream.XStreamBuilder]: : Error creating bean with name ‘XStreamBuilderImpl’: Requested bean is currently in creation: Is there an unresolvable circular reference?; nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name ‘XStreamBuilderImpl’: Requested bean is currently in creation: Is there an unresolvable circular reference?
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:730)

L

verdade, comi bola…

no construtor, use:

public PersistentBagConverter(TypeNameExtractor extractor) {  
   super(new VRaptorClassMapper(new XStream().getMapper(), extractor));
}
R

Dá erro nessa parte:

passando o mouse em cima pede pra fazer um cast

e fica assim:

está correto isso ae?

obrigado.

R

Continua com o mesmo erro fazendo esse cast, e sem ele fica com erro.

L

use Suppliers.ofInstance(extractor)

(do com.google)

R

Lucas estou usando o exemplo do segundo link e tipo, a minha lista de telas vem vazia…com o outro 3.4.0, a lista vinha normal, soh vinha com o problema de referencia circular, dai atualizei pro 3.4.1, arrumou meu projeto inteiro, haviam varias referencias circulares, e todas foram resolvidas, mas nessa tela de agora q estou tentnado arrumar, ela piorou…estgava funcionando e parou…
olha como vem as telas por json…

[{id:9, descricao:11, tipoMaterial:{id:19, descricao:eddd}, telas:[]},?]

L

vc tentou o primeiro jeito com o Suppliers.ofInstance?

R

Sim e dá o seguinte erro:

Grave: Servlet.service() for servlet default threw exception

br.com.caelum.vraptor.InterceptionException: exception raised, check root cause for details: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name XStreamJSONSerialization: Unsatisfied dependency expressed through constructor argument with index 3 of type [br.com.caelum.vraptor.serialization.xstream.XStreamBuilder]: : Error creating bean with name XStreamBuilderImpl: Unsatisfied dependency expressed through constructor argument with index 0 of type [br.com.caelum.vraptor.serialization.xstream.XStreamConverters]: : Error creating bean with name XStreamConverters: Unsatisfied dependency expressed through constructor argument with index 0 of type [java.util.List]: : Error creating bean with name persistentBagConverter: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.cinemotion.controller.PersistentBagConverter]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/xmlpull/v1/XmlPullParserException; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘persistentBagConverter’: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.cinemotion.controller.PersistentBagConverter]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/xmlpull/v1/XmlPullParserException; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘XStreamConverters’: Unsatisfied dependency expressed through constructor argument with index 0 of type [java.util.List]: : Error creating bean with name ‘persistentBagConverter’: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.cinemotion.controller.PersistentBagConverter]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/xmlpull/v1/XmlPullParserException; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘persistentBagConverter’: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.cinemotion.controller.PersistentBagConverter]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/xmlpull/v1/XmlPullParserException; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘XStreamBuilderImpl’: Unsatisfied dependency expressed through constructor argument with index 0 of type [br.com.caelum.vraptor.serialization.xstream.XStreamConverters]: : Error creating bean with name ‘XStreamConverters’: Unsatisfied dependency expressed through constructor argument with index 0 of type [java.util.List]: : Error creating bean with name ‘persistentBagConverter’: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.cinemotion.controller.PersistentBagConverter]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/xmlpull/v1/XmlPullParserException; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘persistentBagConverter’: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.cinemotion.controller.PersistentBagConverter]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/xmlpull/v1/XmlPullParserException; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘XStreamConverters’: Unsatisfied dependency expressed through constructor argument with index 0 of type [java.util.List]: : Error creating bean with name ‘persistentBagConverter’: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.cinemotion.controller.PersistentBagConverter]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/xmlpull/v1/XmlPullParserException; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘persistentBagConverter’: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.cinemotion.controller.PersistentBagConverter]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/xmlpull/v1/XmlPullParserException

at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:96)

at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)

at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)

at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)

at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:83)

at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)

at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

at br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:48)

at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)

at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

at br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:93)

at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59)

at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

at br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:71)

at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)

at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:69)

at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)

at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)

at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

at br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:44)

at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:91)

at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:58)

at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:88)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:378)

at org.springframework.security.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)

at org.springframework.security.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)

at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)

at org.springframework.security.ui.SessionFixationProtectionFilter.doFilterHttp(SessionFixationProtectionFilter.java:67)

at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)

at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)

at org.springframework.security.ui.ExceptionTranslationFilter.doFilterHttp(ExceptionTranslationFilter.java:101)

at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)

at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)

at org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter.doFilterHttp(SecurityContextHolderAwareRequestFilter.java:91)

at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)

at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)

at org.springframework.security.ui.AbstractProcessingFilter.doFilterHttp(AbstractProcessingFilter.java:277)

at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)

at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)

at org.springframework.security.ui.logout.LogoutFilter.doFilterHttp(LogoutFilter.java:89)

at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)

at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)

at org.springframework.security.context.HttpSessionContextIntegrationFilter.doFilterHttp(HttpSessionContextIntegrationFilter.java:235)

at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)

at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)

at org.springframework.security.util.FilterChainProxy.doFilter(FilterChainProxy.java:175)

at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)

at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)

at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)

at java.lang.Thread.run(Unknown Source)

Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name XStreamJSONSerialization: Unsatisfied dependency expressed through constructor argument with index 3 of type [br.com.caelum.vraptor.serialization.xstream.XStreamBuilder]: : Error creating bean with name XStreamBuilderImpl: Unsatisfied dependency expressed through constructor argument with index 0 of type [br.com.caelum.vraptor.serialization.xstream.XStreamConverters]: : Error creating bean with name XStreamConverters: Unsatisfied dependency expressed through constructor argument with index 0 of type [java.util.List]: : Error creating bean with name persistentBagConverter: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.cinemotion.controller.PersistentBagConverter]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/xmlpull/v1/XmlPullParserException; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘persistentBagConverter’: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.cinemotion.controller.PersistentBagConverter]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/xmlpull/v1/XmlPullParserException; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘XStreamConverters’: Unsatisfied dependency expressed through constructor argument with index 0 of type [java.util.List]: : Error creating bean with name ‘persistentBagConverter’: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.cinemotion.controller.PersistentBagConverter]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/xmlpull/v1/XmlPullParserException; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘persistentBagConverter’: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.cinemotion.controller.PersistentBagConverter]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/xmlpull/v1/XmlPullParserException; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘XStreamBuilderImpl’: Unsatisfied dependency expressed through constructor argument with index 0 of type [br.com.caelum.vraptor.serialization.xstream.XStreamConverters]: : Error creating bean with name ‘XStreamConverters’: Unsatisfied dependency expressed through constructor argument with index 0 of type [java.util.List]: : Error creating bean with name ‘persistentBagConverter’: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.cinemotion.controller.PersistentBagConverter]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/xmlpull/v1/XmlPullParserException; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘persistentBagConverter’: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.cinemotion.controller.PersistentBagConverter]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/xmlpull/v1/XmlPullParserException; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘XStreamConverters’: Unsatisfied dependency expressed through constructor argument with index 0 of type [java.util.List]: : Error creating bean with name ‘persistentBagConverter’: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.cinemotion.controller.PersistentBagConverter]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/xmlpull/v1/XmlPullParserException; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘persistentBagConverter’: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.cinemotion.controller.PersistentBagConverter]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/xmlpull/v1/XmlPullParserException

at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:730)

at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:196)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1003)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:907)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)

at org.springframework.beans.factory.support.AbstractBeanFactory$2.getObject(AbstractBeanFactory.java:329)

at org.springframework.web.context.request.AbstractRequestAttributesScope.get(AbstractRequestAttributesScope.java:43)

at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:325)

at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)

at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:263)

at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1083)

at br.com.caelum.vraptor.ioc.spring.SpringBasedContainer.instanceFor(SpringBasedContainer.java:86)

at br.com.caelum.vraptor.core.DefaultResult.use(DefaultResult.java:57)

at org.cinemotion.controller.GrupoTvController.grid(GrupoTvController.java:45)
L

java.lang.NoClassDefFoundError: org/xmlpull/v1/XmlPullParserException

faltando um jar… mas em todo caso é estranho dar isso…

posta aqui por favor como ficou a PersistentBagConverter

R

Tenho que baixar algum jar? qual? ficou assim a classe:

import br.com.caelum.vraptor.interceptor.TypeNameExtractor;
import br.com.caelum.vraptor.ioc.Component;  
import br.com.caelum.vraptor.serialization.xstream.VRaptorClassMapper;
import br.com.caelum.vraptor.serialization.xstream.XStreamBuilder;  
  
import com.google.common.base.Suppliers;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.converters.collections.CollectionConverter;  
  
@Component  
public class PersistentBagConverter extends CollectionConverter {  
  
	public PersistentBagConverter(TypeNameExtractor extractor) {    
		   super(new VRaptorClassMapper(new XStream().getMapper(), Suppliers.ofInstance(extractor)));  
		}  
  
    @Override  
    @SuppressWarnings("rawtypes")  
    public boolean canConvert(Class type) {  
        return Collection.class.isAssignableFrom(type);  
    }  
      
}

e utilizei o json assim:

result.use(Results.json()).from(grupos).serialize();
R

.

L

o xml dessa classe: org/xmlpull/v1/XmlPullParserException

dica: http://www.findjar.com

R

Aparece um milhao de coisas, usando o exemplo que vc mandou do ext pra ver o comentário do José Maria de Oliveira, deu certo, agora sim a tela está abrindo normalmente trazendo tudo, menos as TELAS rs…já é um progresso né?
alguma sugestão pra consertar isso? vem tudo abrew tudo normal…excluo, altero adiciono…mas não vem a lista de Telas ainda.

L

sim, é um progresso…

o campo telas não deve estar inicializado…

tenta fazer o seguinte então…

-sobrescreva o método marshall no collectionConverter:

@Override
public void marshall(Object value, ....) {
     super.marshall(new ArrayList((Collection) value), ....);
}
R

Onde fica essas classe? eh o PersistentBagConverter?

L

ou nesse PersistentBagConverter, ou no cara que vc copiou do Jose Maria (que tem um collection converter lá)

R

Dá erro, pede pra tirar o override, dai tiro da erro nos pontinhos. Desculpe a minha ignorância.

L

é pra vc sobrescrever o método… os pontinhos é pq eu não estava com vontade de ir até o source da classe pra lembrar qual era a assinatura do método mesmo.

se estiver no eclipse, ctrl + espaço no meio da classe numa linha em branco fora de métodos, e escolher o “Override method marshall”

em todo caso:

public void marshall(Object value, HierarchicalStreamWriter writer, MarshalingContext context) {  
     super.marshall(new ArrayList((Collection) value), writer, context);  
}
R

Consegui fazer o metodo e tals, mas pede pra renomear o: marshall…e tirar o Override.

super.marshall(new ArrayList((Collection) value), writer, context);
L

ajusta pro nome certo então :wink: e copia pro nome do método que tá com @Override

Pra programar em java é importante saber ler os erros que o compilador (ou o eclipse) te dá e saber como corrigir… o ctrl + 1 do eclipse (ou clique no erro) já te falaria como corrigir esses problemas.

R

Consegui deixar o metodo na classe, mas ainda vem com o mesmo erro!

br.com.caelum.vraptor.VRaptorException: Unable to find converter for org.cinemotion.entity.GrupoTela

L

isso acontece qdo vc posta um json para o servidor, ou qdo vc passa um form normal?

R

Creio que seja a segunda opção, bom, eu pego as telas por esse metodo:

@Path("/grupo/telas/{idd}/dados.json")
	public void gruposPorTela(GrupoTela idd) throws Exception {
		
		result.use(ExtJSJson.class).from(grupoService.getById(idd).getTelas()).serialize();
	}

No console aparece isso sobre esse metodo:

11:07:05,087 DEBUG [DefaultResourceTranslator] trying to access /grupo/telas/26/dados.json
11:07:05,089 DEBUG [VRaptorRequest ] Setting idd with [26]
11:07:05,089 DEBUG [DefaultResourceTranslator] found resource [DefaultResourceMethod: GrupoTvController.gruposPorTelaGrupoTvController.gruposPorTela(GrupoTela)]
11:07:05,120 DEBUG [LazyInterceptorHandler] Invoking interceptor ParametersInstantiatorInterceptor
11:07:05,120 DEBUG [JstlLocalization ] couldn't find message bundle, creating an empty one
11:07:05,121 DEBUG [ParanamerNameProvider] Found parameter names with paranamer for GrupoTvController.gruposPorTela(GrupoTela) as [idd]

todas as telas vem assim por Json, vem o id dela e esse erro acima.

L

se vc quer setar o id do grupoTela, vc tem que colocar:

@Path("/grupo/telas/{idd.id}/dados.json")

ou qqer que seja o nome do id…

R

O erro todo estava aqui mesmo:

@Path("/grupo/telas/{id}/dados.json")
	public void gruposPorTela(Integer idd) throws Exception {
		
		result.use(ExtJSJson.class).from(grupoService.getById(idd).getTelas()).serialize();
	}

onde estava GrupoTela idd trokei por Integer idd, e funcionou, obrigado pela atenção aqui!

R

Deixa tirar uma dúvida por favor, estou tentando pegar uma lista de date, e não consigo, isso seria o vraptor ou o ext?
estou formatando corretamente o jeito que vem do banco e tals, mas mesmo assim nao aparece a hora…tras por json errado tb…nao tras formatado!
e na tela nem aparece…

L

vc vai precisar escrever o converter de data pro xstream fazer do jeito que vc quer… Se for vraptor 3.4.x:

@Component
public class MeuDateConverter implements SingleValueConverter {
    //type => Calendar, date, ou o que for sua data
   // toString e fromString, auto-explicativos.
}
R

Então lucas eh assim, o atributo eh Date com anotação TIME, que vem somente o horário, quero formatar o horário, da pra fazer desse mesmo jeito?tem algo do tipo “H:m:s”?

obrigado.

L

Se vc quer fazer esse tipo de coisa, considere usar o joda-time, que tem um tipo LocalTime que guarda só hora.

assim vc não vai precisar ficar fazendo ifs pra saber se o date tem ou não hora.

R

Sem usar o joda-time, ia ser mto dificil fazer soh com esse dateConverter? e outra coisa…;.o ext consegue formatar a data para o que vc quiser, mas nesse sentiodo de formatar o horário…nao ta dando certo…ele erstava em string e estava funcionando corretamente, mudei pra date ferrou tudo…continua com a anotação TIME? ou isso muda tb?

L

dá pra fazer sim… o problema é vc selecionar qdo vai usar data, qdo vai ser hora e qdo vai ser data e hora…

tente criar a classe que eu falei… pra formatar e parsear a data use o SimpleDateFormat com os formatos respectivos

R

Tentei adicionar uma hora com o timefield do ext, e me vem o seguinte erro.

Caused by: org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute query; SQL [select this_.id_config as id1_46_0_, this_.dia_semana as dia2_46_0_, this_.hr_fim as hr3_46_0_, this_.hr_inicio as hr4_46_0_ from config_hr_funcionamento this_]; nested exception is org.hibernate.exception.SQLGrammarException: could not execute query

at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:629)

at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)

at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:411)

at org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)

at org.springframework.orm.hibernate3.HibernateTemplate.loadAll(HibernateTemplate.java:584)

at org.cinemotion.dao.GenericDAO.list(GenericDAO.java:53)

at org.cinemotion.service.impl.GenericServiceImpl.list(GenericServiceImpl.java:39)

at sun.reflect.GeneratedMethodAccessor186.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)

at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:196)

at $Proxy291.list(Unknown Source)

at org.cinemotion.controller.ConfiguracaoFuncController.grid(ConfiguracaoFuncController.java:31)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:61)

 65 more

Caused by: org.hibernate.exception.SQLGrammarException: could not execute query

at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:90)

at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)

at org.hibernate.loader.Loader.doList(Loader.java:2235)

at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2129)

at org.hibernate.loader.Loader.list(Loader.java:2124)

at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:118)

at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1597)

at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:306)

at org.springframework.orm.hibernate3.HibernateTemplate$5.doInHibernate(HibernateTemplate.java:590)

at org.springframework.orm.hibernate3.HibernateTemplate$5.doInHibernate(HibernateTemplate.java:1)

at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:406)

 81 more

Caused by: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Table cinemotionds.config_hr_funcionamento doesnt exist

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2985)

at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1631)

at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723)

at com.mysql.jdbc.Connection.execSQL(Connection.java:3256)

at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1313)

at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1448)

at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)

at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)

at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:208)

at org.hibernate.loader.Loader.getResultSet(Loader.java:1812)

at org.hibernate.loader.Loader.doQuery(Loader.java:697)

at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259)

at org.hibernate.loader.Loader.doList(Loader.java:2232)

 89 more
L

leia a exception até o final, principalmente os caused by’s:

Table ‘cinemotionds.config_hr_funcionamento’ doesn’t exist

R

Muito bem, fiz isso aqui o banco de dados eh o mesmo que eu e mais 2 usamos, um deles pode ter deletado por algum motivo, vou tentar de noivo qquer coisa aviso aqui, obrigado e desculpa.

R

Com string não dava esse erro abaixo, quando mudei pra Date começou a dar...

15:46:18,085 DEBUG [DefaultExceptionMapper] find for exception class java.lang.NullPointerException
Mai 14, 2012 3:46:18 PM org.apache.catalina.core.StandardWrapperValve invoke
Grave: Servlet.service() for servlet default threw exception
br.com.caelum.vraptor.InterceptionException: exception raised, check root cause for details: java.lang.NullPointerException
at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:96)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:71)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:48)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:83)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:93)
at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:69)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:44)
at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:91)
at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:58)
at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:88)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:378)
at org.springframework.security.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
at org.springframework.security.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
at org.springframework.security.ui.SessionFixationProtectionFilter.doFilterHttp(SessionFixationProtectionFilter.java:67)
at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
at org.springframework.security.ui.ExceptionTranslationFilter.doFilterHttp(ExceptionTranslationFilter.java:101)
at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
at org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter.doFilterHttp(SecurityContextHolderAwareRequestFilter.java:91)
at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
at org.springframework.security.ui.AbstractProcessingFilter.doFilterHttp(AbstractProcessingFilter.java:277)
at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
at org.springframework.security.ui.logout.LogoutFilter.doFilterHttp(LogoutFilter.java:89)
at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
at org.springframework.security.context.HttpSessionContextIntegrationFilter.doFilterHttp(HttpSessionContextIntegrationFilter.java:235)
at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
at org.springframework.security.util.FilterChainProxy.doFilter(FilterChainProxy.java:175)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException
at org.cinemotion.controller.ConfiguracaoFuncController.salvar(ConfiguracaoFuncController.java:46)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:61)
... 66 more

meu método de salvar é esse...

@Post
	@Path("/configuracaofunc/salvar")
	public void salvar(ConfiguracaoFuncionamento configuracaoFunc, List<Date> horarioInicial, List<Date> horarioFinal) throws Exception {
		
		//DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); 
		//date = new java.sql.Date( ((java.util.Date)formatter.parse(configuracaoFunc.getHrFim())).getTime());
		/*Calendar c = Calendar.getInstance();
		Date hora = c.getTime();
		String date = hora.toString();
		System.out.println("dcddddddddddddd" + date);*/
	 
		configuracaoFuncService.truncate();
		for (int i = 1; i <= 7; i++) {
			configuracaoFunc.setDiaSemana(i);
			configuracaoFunc.setHrInicio(horarioInicial.get(i));
			configuracaoFunc.setHrFim(horarioFinal.get(i));
			configuracaoFuncService.insert(configuracaoFunc);
			
		}
	}
L

de novo, leia o erro:

Caused by: java.lang.NullPointerException
at org.cinemotion.controller.ConfiguracaoFuncController.salvar(ConfiguracaoFuncController.java:46)

tem algo null nessa linha

R

Eu li isso, soh nao entendo pq com string funcionava corretamente…e mudando pra Date da tudo isso

L

possivelmente ele devia usar string vazia antes e agora que é Date vem null

R

Desculpa a ignorância! já tentei aqui, chamei colega de serviço aqui, vi uns exemplos da net e não mudei isso, no forum do extJs ninguem me responde!
esse é meu método, como eu fugiria desse nullpointer....tem uma classe identica em outro sistema nosso...e nao dá isso..obrigado..

@Path("/configuracaofunc/grid/dados.json")
	public void grid() throws Exception {
		
		System.out.println("TEALA: "+configuracaoFuncService.list().size());
		result.use(ExtJSJson.class).from(configuracaoFuncService.list()).include("hrInicio").include("hrFim").serialize();
	}
	
	
	@Post
	@Path("/configuracaofunc/salvar")
	public void salvar(ConfiguracaoFuncionamento configuracaoFunc, List<Date> horarioInicial, List<Date> horarioFinal) throws Exception {
		
		//DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); 
		//date = new java.sql.Date( ((java.util.Date)formatter.parse(configuracaoFunc.getHrFim())).getTime());
		/*Calendar c = Calendar.getInstance();
		Date hora = c.getTime();
		String date = hora.toString();
		System.out.println("dcddddddddddddd" + date);*/
	 
		
		   
		
		
		configuracaoFuncService.truncate();
		
		for (int i = 1; i <= 7; i++) {
			
			configuracaoFunc.setDiaSemana(i);			
			configuracaoFunc.setHrInicio(horarioInicial.get(i));
			configuracaoFunc.setHrFim(horarioFinal.get(i));
			
			configuracaoFuncService.insert(configuracaoFunc);
			
		}
	}
L

repito:

qual é essa linha? org.cinemotion.controller.ConfiguracaoFuncController.salvar(ConfiguracaoFuncController.java:46)

o que está null nela?

R

configuracaoFuncService.truncate(); for (int i = 1; i <= 7; i++) { configuracaoFunc.setDiaSemana(i); configuracaoFunc.setHrInicio(horarioInicial.get(i)); configuracaoFunc.setHrFim(horarioFinal.get(i)); configuracaoFuncService.insert(configuracaoFunc);

É essa linha:

tem vez que da no truncate e as vezes eh nessa linha.

L

horarioInicial deve estar nulo, então provavelmente vc não está passando ele corretamente como parâmetro na requsição…

existe algum parametro horarioInicial, ou horarioInicial[] ou ainda horarioInicial[0]?

R

Opa Lucas consegui o timefield no extJs ele envia os dados como String comente, nao imprime Date!
converti o Date pra String e deu certo!

Obrigado.

preciso postar aqui o codigo? acho que dificilmente alguem passa por isso rs…soh noob como eu rs…

Criado 8 de outubro de 2011
Ultima resposta 15 de mai. de 2012
Respostas 93
Participantes 3