Vou por a imagem da arquitetura o código da jsp e das classes, lembrando que estou usando anotations:
index.jsp
<%@ page language=“java” contentType=“text/html; charset=ISO-8859-1” pageEncoding=“ISO-8859-1”%>
<%@ taglib uri="/struts-tags" prefix=“s” %>
Exemplo Struts 2 Simples
<%@ include file="header.jsp" %>
<%@ include file="footer.jsp" %>
Depois da Index ele chama o ProcessoAction.java
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import jbarcodebean.Interleaved25;
import jbarcodebean.JBarcodeBean;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Actions;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import codigoBarraGenerator.BarCodeGenerator;
import dao.ProcessoDao;
import dao.impl.ProcessoDaoImpl;
import model.dgst.Processo;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class ProcessoAction extends ActionSupport{
private final ProcessoDao dao;
private Processo processo;
private ArrayList<Processo> processos = new ArrayList<Processo>();
private BarCodeGenerator bcg = new BarCodeGenerator();
private String cdBarra;
public ProcessoAction(){
this.dao = new ProcessoDaoImpl();
}
public ProcessoAction(final ProcessoDao dao){
this.dao = dao;
}
@Action(value = "pesquisa", results = {
//@Result(name = "okProcesso", type = "redirectAction", params = { "actionName", "listaProcesso" }),
@Result(name = "okProcesso", location = "/processo/listaProcesso.jsp"),
@Result(name = "error", location = "/processo/index.jsp"),
})
public String validaEntrada() {
if (!"".equalsIgnoreCase(processo.getNrCnpj()) && processo.getNrCnpj() != null){
if (processo.getId() != null){
processo = dao.validaEntrada(processo);
if (processo != null){
return "okProcesso";
}else{
return "error";
}
}else{
addActionError("Favor Digitar o ID!");
return "error";
}
}else{
addActionError("Favor Digitar o CNPJ!");
return "error";
}
}
@Action(value = "gerarBoleto", results = @Result(name = "gerarBoleto", location = "/processo/boleto.jsp"))
public String gerarBoleto() {
System.out.println(".................................AQUI.................................");/*
String x;
String y;
processo = dao.validaEntrada(processo);
x = bcg.getCodigoBarraFormated(processo.getDaem());
y = bcg.getCodigoBarraDV(processo.getDaem());
processo.getDaem().setCodigoBarraFormated(x);
processo.getDaem().setCodigoBarra(y);*/
if (processo != null){
return "gerarDaemBoleto";
}else{
return "error";
}
}
@Action(value = "voltarIndex", results = @Result(name = "voltarIndex", location = "/processo/index.jsp"))
public String voltarIndex(){
return "voltarIndex";
}
// @Action(value = “gerarDocumento”, results = @Result(name = “ok”, type=“jasper”, params = {“location”,"/jasper/testando.jasper",“dataSource”,“processos”,“format”,“PDF”}))
@Action(value = “gerarDocumento”, results = @Result(name = “gerarDocumento”, location = “/processo/declaracaoProprietario.jsp”))
public String gerarDocumento(){
System.out.println("…TESTANDO…");
return “gerarDocumento”;
}
// public ArrayList getGerarDocumento(){
// processo = dao.validaEntrada(processo);
// processos.add(processo);
// return processos;
// }
@Action(value = "geraCodBar")
public void geraCodBar() {
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("image/gif");
JBarcodeBean bb = new JBarcodeBean();
bb.setCodeType(new Interleaved25());
// bb.setShowText(false);
cdBarra = cdBarra.replace("’", “”);
bb.setCode(cdBarra);
// bb.setSize(500, 40);
// BufferedImage out = null;
OutputStream out = null;
try {
out = response.getOutputStream();
// bb.draw(out);
bb.gifEncode(out);
out.flush();
// out.close();
} catch (Exception e) {
e.printStackTrace();
}
// return null;
}
public List<Processo> getProcessos() {
return processos;
}
public void setProcessos(ArrayList<Processo> processos) {
this.processos = processos;
}
public String getCdBarra() {
return cdBarra;
}
public void setCdBarra(String cdBarra) {
this.cdBarra = cdBarra;
}
public Processo getProcesso() {
return processo;
}
public void setProcesso(Processo processo) {
this.processo = processo;
}
}
A pessoa clica no botão vai na action faz a ação pesquisa e redireciona para a página listaProcesso.jsp.
<%@ page language=“java” contentType=“text/html; charset=ISO-8859-1” pageEncoding=“ISO-8859-1”%>
<%@ taglib uri="/struts-tags" prefix=“s” %>
SimpleDev - Struts 2
<%@ include file="header.jsp" %>
</form>
</div>
<footer>
<%@ include file="footer.jsp" %>
</footer>
<s:debug/>
</body>
Como podem ver, tem o submit do form que gera o boleto perfeitamente, só que eu depois do boleto pago ele aparece o botão de gerar documento, esse gerar documento quando clica até vai na ProcessoAction, só que com os dados todos vazios, no caso ele chega com o objeto processo null.
Obs.: Não sei colocar os códigos de forma uniforme, e o código da jsp ficou todo ruim, como eu coloco aqui para ficar de forma correta?