Bom dia senhores, estou tentando usar o struts2 mas to tendo problemas com ele. Um dos problemas é que quando submeto o formulário os dados não são recuperados na action, estão vindo nulos. Não sei o pq desse erro. Minha idéia é o seguinte:
1 ? Submeter um arquivo Excel para upload. Quando submetido, listar todas as planilhas dele.
2 ? Quando clicar no link ou botão referente a planilha, será mostrado o conteúdo da planilha selecionada.
No passo 2, quando clico no botão ou link, no action meus atributos estão nulos. Como faço para manter eles no formulário?
Segue trechos de código:
struts.config
<package name="defaut" namespace="/" extends="struts-default" >
<interceptors>
<interceptor name="pontoOnLineUploadInterceptor" class="action.PontoOnLineUploadInterceptor"/>
</interceptors>
<action name="*ImportacaoPonto" class="action.ImportacaoPontoOnLineAction" method="{1}">
<interceptor-ref name="pontoOnLineUploadInterceptor"/>
<result name="show">/jsp/importarPonto.jsp</result>
<result name="success">/teste.jsp</result>
</action>
</package>
JSP
<script language="JavaScript" type="text/JavaScript">
function setTabela(nomeTabela){
var form = document.getElementById("importacaoPontoOnLineForm");
form.nomePlanilhaSelecionada.value = nomeTabela;
}
</script>
<s:form action="/ImportacaoPonto" id="importacaoPontoOnLineForm" theme="simple" method="POST" enctype="multipart/form-data">
<s:textfield name="nomePlanilhaSelecionada"></s:textfield>
<s:textfield name="nomesPlanilhas"></s:textfield>
<s:bean name="dominio.ArquivoImportado" var="arquivoImportado"></s:bean>
<div>
Importar: <s:file name="arquivo" size="100%" label="Importar" ></s:file>
<s:submit action="uploadImportacaoPonto" value="Importar" id="btImportar" ></s:submit>
</div>
<div>
<s:if test="%{nomesPlanilhas != null}">
<table width="100%">
<tr valign="top">
<s:iterator var="nomePlanilha" value="nomesPlanilhas">
<td align="center">
<s:url id="url" action="visualizarImportacaoPonto">
<s:param name="nomePlanilha"> <s:property /> </s:param>
</s:url>
<s:a href="%{url}" > <s:property /> </s:a>
<s:submit action="visualizarImportacaoPonto" value="%{nomePlanilha}" id="btVisualisar_%{nomePlanilha}" onclick="setTabela('%{nomePlanilha}');"></s:submit>
</td>
</s:iterator>
</tr>
</table>
</s:if>
</div>
</s:form>
public class ImportacaoPontoOnLineAction extends PontoOnLineAction implements PontoOnLineUploadInterface{
private File arquivo;//arquivo temporario
private String nomeArquivo; //The uploaded file name
private ArquivoImportado arquivoImportado;
private List<String> nomesPlanilhas = new ArrayList<String>();
private String nomePlanilhaSelecionada;
private List<LinhaArquivoImportado> linhasPlanilha = new ArrayList<LinhaArquivoImportado>();
public String show() throws Exception {
return "show";
}
public String upload() throws Exception {
try {
if(!super.hasErrors()){
if(!Util.isNulloOuVazio(arquivo)){
String strDiretorioUpload = servicoGerenciadorPonto.getDiretorioUpload();
//o Nome do arquivo foi setado pelo interceptor
File arquivoUpload = new File(strDiretorioUpload + this.getNomeArquivo());
File diretorioUpload = new File(strDiretorioUpload);
if(!diretorioUpload.exists()){
diretorioUpload.mkdirs();
}
if(!arquivoUpload.exists()){
arquivoUpload.createNewFile();
}
FileUtils.copyFile(arquivo, arquivoUpload);
arquivo.delete();
arquivoImportado = new ArquivoImportado(arquivoUpload);
nomesPlanilhas = Arrays.asList(arquivoImportado.getNomePlanilhas());
super.addActionMessage("sucesso upload");
}
}
} catch (Exception e) {
super.addActionError(e.getMessage());
}finally{
}
return "show";
}
public String visualizar() throws Exception {
try {
if(!Util.isNulloOuVazio(nomesPlanilhas)
&& !Util.isNulloOuVazio(nomePlanilhaSelecionada) ){
HSSFSheet planilha = arquivoImportado.getPlanilha(nomePlanilhaSelecionada);
linhasPlanilha = arquivoImportado.getLinhasPlanilha(planilha, true);
super.addActionMessage("sucesso visualizando planilha");
}else{
super.addActionMessage("ERRO visualizando planilha");
}
} catch (Exception e) {
super.addActionError(e.getMessage());
}finally{
}
return "show";
}
}
