Problema com Struts 2 + Jasper [RESOLVIDO]

4 respostas
M

Pessoal tenho um sistema utilizando Struts e quero integrar o jasper.

No maven adicionei as seguintes dependencias:

org.apache.struts
struts2-jasperreports-plugin
2.2.1


jasperreports
jasperreports
3.5.3

Minha Action esta assim:

@ParentPackage(“jasperreports-default”)
public class RelatorioUsuarioParceiroAcessoAction extends GenericAction{

private static final long serialVersionUID = 4850322305196597027L;

private String teste = "";

@Action(value = "Relatorio", results = {
	@Result(name = "success", type = "jasper",
			location = "relatorios/relatoriousuarioparceiroacesso.jasper",
			params = {"dataSource", "teste"})
})
public String relatorio() {
	teste = "teste";
	
	return SUCCESS;
}

public String getTeste() {
	return teste;
}

public void setTeste(String teste) {
	this.teste = teste;
}

}

porem quando tento acessar me da o seguinte erro:

Caused by:

java.lang.NullPointerException

at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:89)

at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:628)

at org.apache.struts2.views.jasperreports.JasperReportsResult.doExecute(JasperReportsResult.java:326)

at org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:186)

at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:373)

at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:277)

at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)

at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)

at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)

at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263)

at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)

at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)

at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)

at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:133)

at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)

at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)

at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)

at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)

at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)

at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)

at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)

at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)

at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)

at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)

at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)

at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)

at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)

at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)

at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)

at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)

at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)

at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)

at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)

at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)

at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)

at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:142)

at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)

at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:166)

at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)

at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)

at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)

at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)

at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)

at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)

at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:190)

at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)

at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)

at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)

at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)

at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:485)

at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395)

at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)

at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:399)

at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)

at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)

at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)

at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450)

at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)

at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)

at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)

at org.mortbay.jetty.Server.handle(Server.java:326)

at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)

at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:928)

at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549)

at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)

at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)

at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)

at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)

Ja procurei na net, tentei algumas soluções que achei mas sem sucesso.
Criei o relatorio utilizando o iReport, criei bem simples somente com um texto teste.

Obrigado
Abraço

4 Respostas

jyoshiriro

olá.

Amigo, o atributo “dataSource” deve conter uma collection. Você usou uma String.

E na anotação @Action não precisa usar name=“success”. Pode omitir esse atributo quando se referir ao “success” :wink:

M

jyoshiriro,

Alterei a Action mas sem sucesso, continua o mesmo erro.

Minha action:

public class RelatorioUsuarioParceiroAcessoAction extends ActionSupport{

private static final long serialVersionUID = 4850322305196597027L;

private List<String> teste = new ArrayList<String>();

@Action(value = "RelatorioUsuarioParceiroAcesso", results = {
@Result(type = "jasper", params = { "location", "relatorios/relatoriousuarioparceiroacesso.jasper", 
				   					"dataSource", "teste",
				   					"format", "PDF"}) })
public String execute() {
	
	return SUCCESS;
}

public List<String> getTeste() {
	return teste;
}

public void setTeste(List<String> teste) {
	this.teste = teste;
}

Obrigado
Abraço

M

Então pelo que vi esse problema acontece por causa do printOrder.
no jrmxl eu coloco printOrder = “Vertical” ou printOrder = “Horizontal”.

Mas quando popula o objeto jasperReport o atributo printOrder fica com valor 0 e por causa disso o metodo JRFiller.createFiller retorna null

public static JRBaseFiller createFiller(JasperReport jasperReport) throws JRException

{

JRBaseFiller filler = null;
switch (jasperReport.getPrintOrder())
	{
		case JRReport.PRINT_ORDER_HORIZONTAL :
		{
			filler = new JRHorizontalFiller(jasperReport);
			break;
		}
		case JRReport.PRINT_ORDER_VERTICAL :
		{
			filler = new JRVerticalFiller(jasperReport);
			break;
		}
	}
	return filler;
}

mas não sei como resolver isso… rs

M

Consegui resolver depois de colocar as seguintes dependências no maven:

org.apache.struts struts2-jasperreports-plugin 2.2.1 net.sf.jasperreports jasperreports 3.7.6 antlr antlr 20030911 com.keypoint png-encoder 1.5 com.lowagie itext 2.1.7 commons-beanutils commons-beanutils 20030211.134440 commons-collections commons-collections 20040616 commons-digester commons-digester 2.1 commons-logging commons-logging 1.1.1 jaxen jaxen 1.1.1 jfree jcommon 1.0.15 jfree jfreechart 1.0.13

Sinceramente não sei quais delas faltava, mas assim rolou… rs

Criado 16 de janeiro de 2011
Ultima resposta 17 de jan. de 2011
Respostas 4
Participantes 2