Dúvida Struts2 Annotations - Urgente

Bom dia,

Estou criando uma aplicação pequena Struts 2 sem strtus.xml apenas com annotations, vou explicar o funcionamento da aplicação:

Existe a index.jsp onde o usuário vai fazer uma validação simples, parecida com um login e senha.(funcionando perfeitamente). Essa index tem um form com a ação vinculada a esse form e um botão submit, que ao clicar vai lá na Action.java e valida os dados preenchidos no form.
Após isso ele é redirecionado para outra tela, onde lista os dados dele, incluindo os que ele preencheu na tela anterior, e existe um botão de gerar um boleto(no qual eu criei em jsp mesmo), de acordo com os valores desse usuário, usando a mesma Action da index, sendo que para que os valores chegarem no java, eu tive que botar esses dados em um form, pois chegava null lá na action(onde conclui que mesmo declarando variáveis globais na Action, os valores ficam vinculado a ação).
Após isso existe um outro botão nessa mesma tela que gera um documento para o usuário imprimir, sendo que eu consigo fazer a chamada da ação para gerar o documento(que está sendo criado em jsp mesmo), só que o valores da tela chega na Action como null, outra coisa que não conseguir nesse botão é fazer a geração desse documento via jasperreport.

Então as dúvidas são

1 - Em relação aos valores da variáveis globais na Action que perdem os valores(creio que seja por estar vinculado a action);
2 - Na chamada de mais de uma action na jsp;
3 - Na integração de jasperreport com o struts 2 utilizando o plugin do struts 2 e annotations.

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" %>


Processo

CNPJ:
<%@ 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" %>

Lista de Processo

		</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?

Resolvido, depois de muita tentativa e estudo. E vi que estava usando o struts de forma errada.