Boa tarde pessoal…
Estou tentando fazer com que uma tag sj:autocompleter do plugin jQuery para o Struts 2 seja enviada
via formulario para uma action.
Acontece que o valor dessa tag autocompleter nunca é enviado, e não consigo descobrir o porque.
Tentei substituir essa tag autocompleter por tags textfield, mas ainda assim os seus valores não são enviados
de forma alguma. Como tenho certeza que os valores não são enviados? É porque notei pelo firebug que ao
chamar a action “usuario!listAllBySetor”, nenhum parametro é enviado via GET (junto do endereço da action),
e nenhum parametro é enviado via POST (ao abrir a abinha do firebug para parametros enviados via POST,
o campo está vazio).
Será que alguem tem idéia do que seja?
Seguem os códigos logo abaixo:
detalharDemanda.jsp
<%@taglib prefix="s" uri="/struts-tags"%>
<%@taglib prefix="sj" uri="/struts-jquery-tags"%>
<table style="font-size: 14px;" cellspacing="5">
<tr>
<th colspan="4" class="CMHeader">Dados da Demanda</th>
</tr>
<tr>
<th width="200" align="left">Codigo de Demanda:</th><td width="400" colspan="3"><s:property value="demanda.idDemandaView" /></td>
</tr>
<tr>
<th align="left">Eleitor:</th><td colspan="3"><s:property value="demanda.eleitor.nome"/></td>
</tr>
<tr>
<th align="left">Setor Responsável:</th><td colspan="3"><s:property value="demanda.listaOcorrencias[demanda.listaOcorrencias.size-1].responsavel.setor.nome"/></td>
</tr>
<tr>
<th align="left">Usuário Responsável:</th><td colspan="3"><s:property value="demanda.listaOcorrencias[demanda.listaOcorrencias.size-1].responsavel.nome"/></td>
</tr>
<tr>
<th align="left">Origem da Demanda:</th><td colspan="3"><s:property value="demanda.listaOcorrencias[demanda.listaOcorrencias.size-1].local"/>,
Setor de <s:property value="demanda.listaOcorrencias[demanda.listaOcorrencias.size-1].responsavel.setor.nome"/>,
<s:property value="demanda.listaOcorrencias[demanda.listaOcorrencias.size-1].responsavel.nome"/>
</td>
</tr>
<tr>
<th align="left">Solicitação:</th><td><s:property value="demanda.solic"/></td>
</tr>
<tr>
<th align="left">Descrição:</th><td><s:property value="demanda.obs"/></td>
</tr>
<tr>
<th align="left">Status:</th><td><s:property value="demanda.status"/></td>
</tr>
</table>
<sj:accordion id="tramitar" autoHeight="false" collapsible="true" active="false">
<sj:accordionItem title="Tramitar Demanda">
<%-- <s:form id="tramiteOcorrencia" action="demanda!detalharDemanda?demanda.idDemanda=%{demanda.idDemanda}"> --%>
<table>
<tr>
<s:form action="usuario!listAllBySetor" id="masq">
<%-- <sj:autocompleter label="Setor" id="idSetor" name="setor.idSetor" list="listaSetores" listKey="idSetor" listValue="nome" onChangeTopics="submitForm"/> --%>
<sj:textfield label="Id" name="usuario.idUsuario"/>
<sj:textfield label="Nome" name="usuario.nome"/>
<sj:submit targets="divUsuarios" formIds="masq" listenTopics="submitForm"/>
</s:form>
</tr>
<tr>
<td>Usuario: </td>
<td style="padding-left: 8px;">
<sj:div id="divUsuarios" deferredLoading="true" listenTopics="submitForm"></sj:div>
</td>
</tr>
<tr>
<s:textfield name="acao" size="50" label="Ação"/>
</tr>
<tr>
<s:textarea cols="48" rows="5" name="descricao" label="Descrição"/>
</tr>
<tr>
<s:textfield name="solicitacao" label="Solicitação" size="50"/>
</tr>
<tr>
<sj:submit openDialog="dmdDialog" />
</tr>
</table>
<%-- </s:form> --%>
</sj:accordionItem>
</sj:accordion>
struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<include file="struts-default.xml"/>
<package name="default" extends="struts-default,json-default" namespace="/">
<action name="ocorrencia!*" method="{1}" class="br.com.jm.actions.OcorrenciaAction">
<result name="listAllGrid">/caixaDeEntrada.jsp</result>
<result name="nextPage">/caixaDeEntrada.jsp</result>
<result name="prevPage">/caixaDeEntrada.jsp</result>
<result name="firstPage">/caixaDeEntrada.jsp</result>
<result name="lastPage">/caixaDeEntrada.jsp</result>
<result name="listOne">/detalharDemanda.jsp</result>
<result name="listAllDialog">/detalharDemanda-ocorrencias.jsp</result>
</action>
<action name="demanda!*" method="{1}" class="br.com.jm.actions.DemandaAction">
<result name="detalharDemanda">/detalharDemanda.jsp</result>
</action>
<action name="mensagem!*" method="{1}" class="br.com.jm.actions.MensagemAction">
<result name="listAllGrid">/caixaDeMensagens.jsp</result>
<result name="nextPage">/caixaDeMensagens.jsp</result>
<result name="prevPage">/caixaDeMensagens.jsp</result>
<result name="firstPage">/caixaDeMensagens.jsp</result>
<result name="lastPage">/caixaDeMensagens.jsp</result>
<result name="listOne">/detalharMsg.jsp</result>
</action>
<action name="usuario!*" method="{1}" class="br.com.jm.actions.UsuarioAction">
<result name="invalid">/errorLogin.jsp</result>
<result name="valid">/home.jsp</result>
<result name="listAllBySetor">/detalharDemanda-innerSelect.jsp</result>
</action>
</package>
</struts>
UsuarioAction.java
package br.com.jm.actions;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.struts2.interceptor.SessionAware;
import br.com.jm.beans.Setor;
import br.com.jm.beans.Usuario;
import br.com.jm.dao.UsuarioDAO;
import com.opensymphony.xwork2.ActionSupport;
public class UsuarioAction extends ActionSupport implements SessionAware{
private static final long serialVersionUID = 5784476221249999011L;
private UsuarioDAO udao = new UsuarioDAO();
private Usuario usuario = new Usuario();
private Setor setor = new Setor();
private List<Usuario> listaUsuarios = new ArrayList<Usuario>();
private Map<String, Object> session = new HashMap<String, Object>();
public String login(){
usuario = udao.validateLogin(usuario);
if(usuario!=null){
session.put("nome_usuario", usuario.getNome());
session.put("usuario", usuario);
return "valid";
}else{
return "invalid";
}
}
public String listAllSelect(){
listaUsuarios = udao.listAll();
return "listAllSelect";
}
public String listAllBySetor(){
listaUsuarios = udao.listBySetor(setor);
return "listAllBySetor";
}
public final Usuario getUsuario() {
return usuario;
}
public final void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
public final Map<String, Object> getSession() {
return session;
}
public final void setSession(Map<String, Object> session) {
this.session = session;
}
public final List<Usuario> getListaUsuarios() {
return listaUsuarios;
}
public final void setListaUsuarios(List<Usuario> listaUsuarios) {
this.listaUsuarios = listaUsuarios;
}
public final Setor getSetor() {
return setor;
}
public final void setSetor(Setor setor) {
this.setor = setor;
}
}