Struts 2 + ajax + form

5 respostas
fsquadro

Pessoal, estou com o seguinte problema com o struts 2.0.6:

estou usando formulários remotos (via ajax), porém só está funcionando no FireFox. No Internet Explorer (testei as versões 6 e 7) os valores dos inputs não chegam ao Action.

Alguém já passou por este problema?

Valeu!

Segue código fonte da aplicação:

Formulário jsp:

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>

<s:actionmessage />

<s:form
    theme="ajax"
    action="/Boletim-save.action"
    method="get"
>
    <s:textfield name="nome"  label="Nome" size="48" required="true" />
    <s:textfield name="eMail" label="E-mail" size="48" required="true" />
    <s:submit theme="ajax" cssClass="btn" value="Cadastrar" targets="conteudoBoletim" align="center" />
</s:form>

Arquivo XML de configuração do struts:

<package name="boletim" namespace="/" extends="struts-default">    
        <action name="Boletim-*" method="{1}" class="Boletim">
            <result name="input">/boletim/boletimCadastro.jsp</result>
            <result name="success">/boletim/boletimCadastro.jsp</result>                
        </action>
</package>

Classe Action:

public class Boletim extends ActionSupport{
    
    public String save() throws Exception{
            try{
                BoletimMd boletimMd = new BoletimMd();
                boletimMd.setNome(getNome());
                boletimMd.setEMail(getEMail());
                BoletimDb boletimDb = new BoletimDb();
                boletimDb.insert(boletimMd);
                addActionMessage(getNome()+", seu cadastro foi realizado com sucesso.");
                return SUCCESS;                            
            } catch(Exception e){
                addFieldError("eMail","Este email já está cadastrado!");
                return INPUT;
            }
    }
}

5 Respostas

ericogr

Opa, blz Kra?

Estou passando por este mesmo problema…
Funciona perfeitamente no FF, porém não no IE :evil:

Parece ser algum problema com a versão do struts (2.0.6) pois os próprios exemplos que acompanham a documentação (aquele showcase), que usam formulários ajax, não funcionam no IE. Se vc habilitar a exibição de mensagens de erros de script no IE vai ver os erros…

Será que não existe uma versão em desenvolvimento do struts que corrija este problema???

Obs: o mesmo recurso parece funcionar no webwork :?

fsquadro

Após profunda pesquisa em todos os sites sobre struts… não achei nada!!! :wink:

Mas descobri a solução na base da tentativa e erro e muita sorte!

faça o seguinte,

na tag s:submit adicione a seguinte propriedade: showLoadingText=“false”

ficando parecido com:

<s:submit 
        type="submit" 
        theme="ajax" 
        value="Cadastrar" 
        targets="seu_div" 
        showLoadingText="false"
        align="center" 
    />

Se não funcionar avise… :wink:

Valeu!

ericogr

Valeu mesmo pela dica! Realmente funcionou no IE, Foram exibidos erros de script, mas funcionou :smiley:

Tentei usar a versão 2.0.7 mas tive o mesmo problema… só desativando a o showLoadingText funciona.

Fiz uma busca e achei o seguinte tópico: http://issues.apache.org/struts/browse/WW-1598

bem no final, tem a dica do showLoadingText


Musachy Barroso [25/Feb/07 08:46 AM]
The problem here was when the “target” of the submit was a parent element, on which a message (“Loading…”) is displayed on the target, deleting the form, which never got submitted. I added the “showLoadingText” attribute which can be set to “false” to prevent this situation. By the way I think there was another ticket for this.

valeu

andersondamasio

Olá pessoal estoui com o mesmo problema…
minha div não quer atualizar no IE 7…
Alguém conseguiu uma solução para este problema no struts 2.0.11??

Obrigado

J

fsquadro
Valeu, tava com esse mesmo problema na versão 2.0.11…usei esse artifício e deu certo.
Mas afinal, isso é bug do Struts ou não???

Abraço. :smiley:

Criado 9 de abril de 2007
Ultima resposta 1 de ago. de 2008
Respostas 5
Participantes 4