Dúvida Struts 2: carregar action!

4 respostas
Ladim

E aí pessoas…

Estou fazendo uma aplicação com o Struts 2 e estou com um problema:

Preciso que a página carregue uma action automaticamente quando for acionada, tipo um “onload” da tag body.
É que eu preciso listar alguns resultados na página index e como ela é carregada quando o usuário digita a url, eu não sei como fazer para executar a action.

Não tenho nem idéia de como fazer. Pesquisei no Google e não encontrei nada. Tentei algumas coisas aqui e tbm não funcionaram.

Desde já, obrigado.

Ladim.

4 Respostas

wag_ferreira

Cara,

Acho que você tem que chamar seu metodo assim EX.: execute.action

So iniciante com Struts 2 e to tendo problemas em fazer meu jsp reconhecer minha action.
Quando aberto no meu button, ele não dispara a minha action, não sei o que estou errando.
Em vez de ele chamar minha action, ele ta dando um submit e me redirecionando para uma outra tela…
não sei o que realmente está acontece…

Preciso de ajuda com isso para hoje.

wag_ferreira

Está assim meu codigo.

<s:form>
            <div id="tabs4">
                <ul>
                    &lt;!-- CSS Tabs --&gt;
                    <li ><a >&lt;span&gt;Cadastros&lt;/span&gt;</a></li>
                    <li><a >&lt;span&gt;Adm/Fin&lt;/span&gt;</a></li>
                    <li><a >&lt;span&gt;Fiscais&lt;/span&gt;</a></li>
                    <li><a >&lt;span&gt;Vendas&lt;/span&gt;</a></li>
                    <li><a >&lt;span&gt;Contatos&lt;/span&gt;</a></li>

                </ul>
            &lt;/div&gt;
            &lt;table width="100%" border="0" cellspacing="0" cellpadding="0"&gt;
                &lt;tr&gt;
                    &lt;td &gt;
                        &lt;div dojoType="dijit.Toolbar"&gt;
                            &lt;div dojoType="dijit.form.Button" iconClass="Consultar" showLabel="true" onclick=""&gt;Consultar&lt;/div&gt;
                        &lt;/div&gt;
                    &lt;/td&gt;
                &lt;/tr&gt;
            &lt;/table&gt;
            &lt;table width="100%" cellpadding="0" cellspacing="1" border="0" &gt;
                &lt;s:submit action="consultaCliente" value="CONSULTAR"/&gt;
                &lt;tr&gt;
                    &lt;td width="150" align="right" class="forme"&gt;Codigo&nbsp;&nbsp;&lt;/td&gt;
                    &lt;td width="200" class="forme" &gt;
                        &lt;s:textfield theme="simple" name="manterClientesVO.cdCliente" cssClass="input" id="cdCliente" size="10"/&gt;
                        <img      >
                    &lt;/td&gt;
                    &lt;td align="right" class="forme" &gt;Loja&nbsp;&nbsp;&lt;/td&gt;
                    &lt;td class="forme" &gt;
                        &lt;s:textfield theme="simple" name="manterClientesVO.cdLoja" cssClass="input" id="cdLoja" size="10"/&gt;
                    &lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td class="forme" align="right"&gt;Nome&nbsp;&nbsp;&lt;/td&gt;
                    &lt;td colspan="2" class="forme" &gt;
                        &lt;s:textfield theme="simple" name="manterClientesVO.nmNome" cssClass="input" id="nmNome" size="60"/&gt;
                    &lt;/td&gt;
                    &lt;td class="forme" &gt;&nbsp;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td class="forme" align="right"&gt;Tipo&nbsp;&nbsp;&lt;/td&gt;
                    &lt;td class="forme" &gt;
                        &lt;s:textfield theme="simple" name="manterClientesVO.nmTipoCliente" cssClass="input" id="nmTipoCliente" size="40"/&gt;
                    &lt;/td&gt;
                    &lt;td align="right" class="forme" &gt;Bloqueado&nbsp;&nbsp;&lt;/td&gt;
                    &lt;td class="forme" &gt;
                        &lt;s:textfield theme="simple" name="manterClientesVO.nmBloqueado" cssClass="input" id="nmBloqueado" size="10"/&gt;
                    &lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td class="forme" align="right"&gt;Fisica/Jurid&nbsp;&nbsp;&lt;/td&gt;
                    &lt;td class="forme" &gt;
                        &lt;s:textfield theme="simple" name="manterClientesVO.nmTipoPessoa" cssClass="input" id="nmTipoPessoa" size="40"/&gt;
                    &lt;/td&gt;
                    &lt;td align="right" class="forme" &gt;&nbsp;&lt;/td&gt;
                    &lt;td class="forme" &gt;&nbsp;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td class="forme" align="right"&gt;N Fantasia&nbsp;&nbsp;&lt;/td&gt;
                    &lt;td colspan="2" class="forme" &gt;
                        &lt;s:textfield theme="simple" name="manterClientesVO.nmFantasiaReduz" cssClass="input" id="nmFantasiaReduz" size="60"/&gt;&nbsp;&nbsp;
                    &lt;/td&gt;
                    &lt;td class="forme" &gt;&nbsp;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td class="forme" align="right"&gt;Endereco&nbsp;&nbsp;&lt;/td&gt;
                    &lt;td colspan="2" class="forme"&gt;
                        &lt;s:textfield theme="simple" name="manterClientesVO.endereco" cssClass="input" id="endereco" size="60"/&gt;
                    &lt;/td&gt;
                    &lt;td valign="middle" class="forme" &gt;&nbsp;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td class="forme" align="right"&gt;Municipio&nbsp;&nbsp;&lt;/td&gt;
                    &lt;td class="forme"&gt;
                        &lt;s:textfield theme="simple" name="manterClientesVO.nmMunicipio" cssClass="input" id="nmMunicipio" size="40"/&gt;
                    &lt;/td&gt;
                    &lt;td align="right" class="forme" &gt;Estado&nbsp;&nbsp;&lt;/td&gt;
                    &lt;td class="forme" &gt;
                        &lt;s:textfield theme="simple" name="manterClientesVO.nmEstado" cssClass="input" id="nmEstado" size="10"/&gt;
                    &lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td class="forme" align="right"&gt;Pais&nbsp;&nbsp;&lt;/td&gt;
                    &lt;td class="forme"&gt;
                        &lt;s:textfield theme="simple" name="manterClientesVO.nmPais" cssClass="input" id="nmPais" size="40"/&gt;
                    &lt;/td&gt;
                    &lt;td align="right" class="forme" &gt;DDI&nbsp;&nbsp;&lt;/td&gt;
                    &lt;td class="forme" &gt;
                        &lt;s:textfield theme="simple" name="manterClientesVO.cdDdi" cssClass="input" id="cdDdi" size="10"/&gt;
                    &lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td class="forme" align="right"&gt;Telefone&nbsp;&nbsp;&lt;/td&gt;
                    &lt;td class="forme" &gt;
                        &lt;s:textfield theme="simple" name="manterClientesVO.nrTelefone" cssClass="input" id="nrTelefone"/&gt;
                    &lt;/td&gt;
                    &lt;td align="right" class="forme" &gt;CEP&nbsp;&nbsp;&lt;/td&gt;
                    &lt;td class="forme" &gt;
                        &lt;s:textfield theme="simple" name="manterClientesVO.nrCep" cssClass="input" id="nrCep" size="10"/&gt;
                    &lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td class="forme" align="right"&gt;FAX&nbsp;&nbsp;&lt;/td&gt;
                    &lt;td class="forme" &gt;
                        &lt;s:textfield theme="simple" name="manterClientesVO.nrFax" cssClass="input" id="nrFax" size="20"/&gt;
                    &lt;/td&gt;
                    &lt;td align="right" class="forme" &gt;Dt Abert/Nasc &nbsp;&nbsp;&lt;/td&gt;
                    &lt;td class="forme" &gt;
                        &lt;s:textfield theme="simple" name="manterClientesVO.dtAberNasc" cssClass="input" id="dtAberNasc" size="10"/&gt;
                    &lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td class="forme" align="right"&gt; CNPJ/CPF&nbsp;&nbsp;&lt;/td&gt;
                    &lt;td class="forme" &gt;
                        &lt;s:textfield theme="simple" name="manterClientesVO.cnpjCpf" cssClass="input" id="cnpjCpf" size="40"/&gt;
                    &lt;/td&gt;
                    &lt;td align="right" class="forme" &gt;Ins. Estad&nbsp;&nbsp; &lt;/td&gt;
                    &lt;td class="forme" &gt;
                        &lt;s:textfield theme="simple" name="manterClientesVO.inscEstadual" cssClass="input" id="inscEstadual" size="20"/&gt;
                    &lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td class="forme" align="right"&gt;RG/Ced Estr&nbsp;&nbsp;&lt;/td&gt;
                    &lt;td class="forme" &gt;
                        &lt;s:textfield theme="simple" name="manterClientesVO.rgCedEst" cssClass="input" id="rgCedEst"/&gt;
                    &lt;/td&gt;
                    &lt;td align="right" class="forme" &gt;Ins. Municip&nbsp;&nbsp;&lt;/td&gt;
                    &lt;td class="forme" &gt;
                        &lt;s:textfield theme="simple" name="manterClientesVO.inscMunicipio" cssClass="input" id="inscMunicipio" size="20"/&gt;
                    &lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td class="forme" align="right"&gt;Home-Page&nbsp;&nbsp;&lt;/td&gt;
                    &lt;td class="forme" &gt;
                        &lt;s:textfield theme="simple" name="manterClientesVO.homePage" cssClass="input" id="homePage" size="40"/&gt;
                    &lt;/td&gt;
                    &lt;td align="right" class="forme" &gt;Ins Rural &nbsp;&nbsp;&lt;/td&gt;
                    &lt;td class="forme" &gt;
                        &lt;s:textfield theme="simple" name="manterClientesVO.inscRual" cssClass="input" id="inscRual" size="20"/&gt;
                    &lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td class="forme" align="right"&gt;E-mail&nbsp;&nbsp;&lt;/td&gt;
                    &lt;td class="forme" &gt;
                        &lt;s:textfield theme="simple" name="manterClientesVO.email" cssClass="input" id="email" size="40"/&gt;
                    &lt;/td&gt;
                    &lt;td align="right" class="forme" &gt;Contato&nbsp;&nbsp;&lt;/td&gt;
                    &lt;td class="forme" &gt;
                        &lt;s:textfield theme="simple" name="manterClientesVO.contato" cssClass="input" id="contato" size="20"/&gt;
                    &lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td class="forme" align="right"&gt;Home Page&nbsp;&nbsp;&lt;/td&gt;
                    &lt;td class="forme" &gt;
                        &lt;s:textfield theme="simple" name="manterClientesVO.homePage" cssClass="input" id="homePage" size="40"/&gt;
                    &lt;/td&gt;
                    &lt;td align="right" class="forme" &gt;Cod CBO&nbsp;&nbsp;&lt;/td&gt;
                    &lt;td class="forme" &gt;
                        &lt;s:textfield theme="simple" name="manterClientesVO.cdCbo" cssClass="input" id="cdCbo" size="20"/&gt;
                    &lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td class="forme" align="right"&gt;Complemento&nbsp;&nbsp;&lt;/td&gt;
                    &lt;td colspan="3" class="forme" &gt;
                        &lt;s:textfield theme="simple" name="manterClientesVO.nmComplemento" cssClass="input" id="nmComplemento" size="80"/&gt;
                    &lt;/td&gt;
                &lt;/tr&gt;
            &lt;/table&gt;
        &lt;/s:form&gt;
    &lt;/body&gt;
&lt;/html&gt;

minha acition

package com.action;

import com.isdra.gcr.persistence.Conexao;
import com.isdra.gcr.service.ManterClientesService;
import com.isdra.gcr.vo.ManterClientes;
import com.opensymphony.xwork2.ActionSupport;

/**
 *
 * @author wagner.ferreira
 */

public class ManterClientesAction extends ActionSupport {
    
    private ManterClientes manterClientesVO;

    public ManterClientesAction() {
    }

    public String consultaCliente() throws Exception {
        Conexao con = new Conexao();
        con.getConnection();

        ManterClientesService manterClientesService = new ManterClientesService();

        manterClientesVO = manterClientesService.findManterClientes(manterClientesVO);

        return "success";
    }
    
    public ManterClientes getManterClientesVO() {
        return manterClientesVO;
    }

    public void setManterClientesVO(ManterClientes manterClientesVO) {
        this.manterClientesVO = manterClientesVO;
    }
}

meu struts.xml

&lt;struts&gt;
    &lt;constant name="struts.enable.DynamicMethodInvocation" value="false"/&gt;
    &lt;constant name="struts.devMode" value="true" /&gt;
    
    &lt;package name="action" extends="struts-default"&gt;

    &lt;action name="consultaCliente" class="com.action.ManterClientesAction" method="consultaCliente"&gt;
         &lt;result name="success"&gt;manterclientes/manterclientecadastros.jsp&lt;/result&gt;
    &lt;/action&gt;

    &lt;/package&gt;
&lt;/struts&gt;

O que é que estou fazendo de errado???

R

Olá Ladim,

pelo que eu entendi vc quer executar sua action antes de carregar a pagina.
Não entendi o porque de fazer isso no metodo onload da pagina.

A forma mais simples de fazer isso é vc chamar a action ao invés da pagina e na action dá um forward para o JSP.

Ladim

Rachel Vital:
Olá Ladim,

pelo que eu entendi vc quer executar sua action antes de carregar a pagina.
Não entendi o porque de fazer isso no metodo onload da pagina.

A forma mais simples de fazer isso é vc chamar a action ao invés da pagina e na action dá um forward para o JSP.

Olá Rachel.

O problema é mais ou menos o seguinte: Executar a action com um forward pra JSP é tranqüilo. O problema seria executar, por exemplo, uma action diferente ao carregar esse JSP.

Exemplo:

<action name="exemplo" method="editar"> <result>UmaPagina.jsp</result> </action>

Agora quando acontecer o load dessa página, UmaPagina.jsp, eu precisaria carregar alguns dados que estão mapeados em uma outra action, por exemplo:

<action name="exemplo2" method="listarDados"> <result>UmaPagina.jsp</result> </action>

Por isso, precisaria ser no load da página ou de alguma outra forma que não sei.

Obrigado,

Ladim.

Criado 21 de novembro de 2008
Ultima resposta 23 de nov. de 2008
Respostas 4
Participantes 3