Dúvida Struts + Ajax

4 respostas
rafaelferreira

Quando implemento o tema AJAX não consigo visualizar a mensagem de retorno da Action, que deveria ser exibida na página, também estou com o mesmo problema em uma consulta, o qual o resultado da action não é exibido na tela. Segue abaixo os códigos:

Salvar registro:

<s:div label="Cadastrar notícia" theme="ajax">
              <table cellspacing="0" cellpadding="10">
                <tr>
                  <td width="570"><h2>Cadastrar nova notícia</h2></td>
                </tr>
                <tr>
                  <td>
                    <s:form action="saveNoticia" validate="true">
                      <s:textfield name="titulo" size="55" label="Título"></s:textfield>
                      <s:datetimepicker name="publicado" label="Publicado" theme="ajax" displayFormat="dd/MM/yyyy" />
                      <s:textarea name="conteudo" cols="45" label="Conteúdo" rows="10" />
                      <s:submit value="Gravar" theme="ajax" notifyTopics="saveNoticia" />
                    </s:form>
                    <s:actionmessage />
                  </td>
                  <tr>
                  </tr>
                </tr>
              </table>

            </s:div>

Alguém sabe me dizer aonde estou errando? Grato!

4 Respostas

fiaux

Como você implementou isso?
Ao usar a div remota você deve dizer qual action deve ser chamada, e criar essa action e uma jsp para ela. Essa jsp vai ser “imbutida” na s:div.

rafaelferreira

A minha ACTION está no formulário, você esta querendo dizer então que devo ter uma ACTION para a DIV remota e outra para o formulário?

fiaux

Não estou dizendo que você DEVE ter mas que eu FAÇO assim.

rafaelferreira

fiaux, fiz conforme você me orientou, observe o resultado:

<s:div theme="ajax" label="Cadastrar Notícia" id="cadNoticia" href="exibeSalvar.action" listenTopics="listaSalvarTopic" showLoadingText="true" showErrorTransportText="true" />

A página a ser imbutida:

<table cellspacing="0" cellpadding="10">
  <tr>
    <td width="570"><h2>Cadastrar nova notícia</h2></td>
  </tr>
  <tr>
    <td>
      <s:form action="saveNoticia" validate="true">
        <s:textfield name="titulo" size="55" label="Título" />
        <s:datetimepicker name="publicado" label="Publicado" theme="ajax" displayFormat="dd/MM/yyyy" />
        <s:textarea name="conteudo" cols="45" label="Conteúdo" rows="10" />
        <s:submit value="Gravar" theme="ajax" targets="cadNoticia" />
      </s:form>
      <s:actionmessage />
    </td>
    <tr>
    </tr>
  </tr>
</table>

Porém ao executar a action agora está retornando o seguinte erro:

ReferenceError: validateForm_saveNoticia is not defined

Creio que ele não esteja encontrando a validação do STRUTS, uma outra DIV exatamente igual a de cima porém sem validação está funcionando perfeitamente.

Devo modificar alguma configuração do Struts para resolver este problema?

Criado 1 de setembro de 2008
Ultima resposta 1 de set. de 2008
Respostas 4
Participantes 2