boa tarde, estou com problemas para fazer rodar um relatório em um site jsp, sou iniciante e ja tentei seguir alguns tutoriais, nao sei se os tutoriais estao desatualizados ou é erro meu causado pela minha inexperiencia, so acho tutoriais para gerar o relatorio via classe com main, porem quero pra web e tentei algumas modificações, porem deu erro. segue as classes e o erro:
Struts.xml
<package name="strutsreport" namespace="/" extends="jasperreports-default">
<action name="gerarRelatorio" class="testeJasper.JasperAction">
<result name="success" type="jasper">
<param name="location">/Matriculas.jasper</param>
<param name="dataSource">myList</param>
<param name="format">PDF</param>
</result>
</action>
</package>
JasperAction.java
public class JasperAction extends ActionSupport {
private final Connection connection;
public JasperAction() {
try {
connection = new ConnectionFactory().getConnection();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
List<Mensalidade> myList = new ArrayList<Mensalidade>();
public String execute() throws Exception {
PreparedStatement stmt = this.connection.prepareStatement("SELECT MATRICULA_CLI, NOMECOMPLETO_CLI, MESREFERENCIA, ANOREFERENCIA FROM TB_TB_MENSALIDADE WHERE PAGAMENTOOK=0 ORDER BY MATRICULA_CLI");
ResultSet rs = stmt.executeQuery();
while(rs.next()) {
//adiciona a tarefa na lista
myList.add(populaContato(rs));
}
try {
JasperCompileManager.compileReportToFile(
"/Mensalidades.jrxml",
"/Mensalidades.jasper");
} catch (Exception e) {
e.printStackTrace();
return ERROR;
}
return SUCCESS;
}
private Mensalidade populaContato(ResultSet rs) throws SQLException {
Mensalidade mensalidade = new Mensalidade();
//INICIALIZA OBJETO MENSALIDADE
mensalidade.setMatricula_cli(rs.getInt("MATRICULA_CLI"));
mensalidade.setNomecompleto_cli(rs.getString("NOMECOMPLETO_CLI"));
mensalidade.setMesreferencia(rs.getString("MESREFERENCIA"));
mensalidade.setAnoreferencia(rs.getString("ANOREFERENCIA"));
return mensalidade;
}
public List<Mensalidade> getMyList() {
return myList;
}
}
testejasper.jsp
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Insert title here</title>
</head>
<body>
<s:form action="gerarRelatorio">
<s:submit value="Gerar Relatório de Mensalidades em pdf"></s:submit>
</s:form>
</body>
e o erro quando eu clico no botao para gerar o relatorio:
type Status report
message No result defined for action testeJasper.JasperAction and result error
description The requested resource (No result defined for action testeJasper.JasperAction and result error) is not available.
no console do eclipse:
conectando ...
net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException: /Mensalidades.jrxml (No such file or directory)
at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:174)
at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:154)
at net.sf.jasperreports.engine.JasperCompileManager.compileReportToFile(JasperCompileManager.java:111)
at testeJasper.JasperAction.execute(JasperAction.java:44)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:441)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:280)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:243)
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:165)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)