Multipla Seleção no Struts

Pessoal,

Sou novo em Java e peguei um programa que preciso alterar.

Esta aplicação foi desenvolvida no modelo do struts o que me deixa mais em dúvida.

Bem o problema é que existe um SELECT no jsp que não permite a seleção múltipla de Grupos de uma determinada função.

O SELECT só lê um registro por vez.

Isso para resolver foi simples, bastou adicionar a tag MULTIPLE junto ao SELECT. Agora é possível selecionar mais de uma opção no SELECT.

Mas o problema é como eu faço para fluir essa lista de Grupos selecionados na página pela aplicação?

Meu problema é que a variável “listaUsuarioNaoAssociado” retornada pelo grupoUusarioAction.java deverá conter todos os parâmetros dos diversos grupos selecionados na página
e não apenas de um único grupo como está acontecendo.

Alguém tem uma idéia de como posso corrigir esses problemas?

Obrigado!


grupoUsuarioBO.java

public class GrupoUsuarioBO {
private int codigoUsuario;
private int sessionId;

public GrupoUsuarioBO(int cdUsuario, int sessionId) {
	this.codigoUsuario = cdUsuario;
	this.sessionId = sessionId;
}

(…)

/**
 * Obtem os logins dos grupos de usuario associados
 * @return List (Lista de UsuarioTO)
 * @param grupoUsuarioTO
 * @param tp_usuario
 */
public List obterLoginByGrupoUsuarioAssociado(
		GrupoUsuarioTO grupoUsuarioTO, String tp_usuario)
		throws BOException {

	ManterLoginDAOOracle manterLoginDAOOracle;
	List listLoginByUsuarioAssociado = new ArrayList();
	try {
		manterLoginDAOOracle = new ManterLoginDAOOracle(codigoUsuario, sessionId);
		listLoginByUsuarioAssociado = manterLoginDAOOracle.selectLoginByGrupoUsuarioAssociado(
				grupoUsuarioTO, tp_usuario);
	} catch (Exception e) {
		throw new BOException(
				"Erro ao obter os logins dos usuarios associados", e);
	}
	return listLoginByUsuarioAssociado;
}

/**
 * Obtem os logins dos grupos de usuario nao associados
 * 
 * @return List (Lista de UsuarioTO)
 * @param grupoUsuarioTO
 * @param tp_usuario
 * @throws BOException
 */
public List obterLoginByGrupoUsuarioNaoAssociado(
		GrupoUsuarioTO grupoUsuarioTO, String tp_usuario)
		throws BOException {

	ManterLoginDAOOracle manterLoginDAOOracle;
	List listLoginByUsuarioAssociado = new ArrayList();
	try {
		manterLoginDAOOracle = new ManterLoginDAOOracle(codigoUsuario, sessionId);
		if ((!tp_usuario.equals("I")) && (!tp_usuario.equals("T"))) {
			listLoginByUsuarioAssociado = manterLoginDAOOracle
					.selectLoginByGrupoUsuarioNaoAssociadoEmp(
							grupoUsuarioTO, tp_usuario);
		} else if (tp_usuario.equals("I")) {
			listLoginByUsuarioAssociado = manterLoginDAOOracle
					.selectLoginByGrupoUsuarioNaoAssociado(grupoUsuarioTO,
							tp_usuario);
		} else {
			listLoginByUsuarioAssociado = manterLoginDAOOracle
			.selectLoginByGrupoUsuarioNaoAssociadoTodos(grupoUsuarioTO,
					tp_usuario);
		}
	} catch (Exception e) {
		throw new BOException(
				"Erro ao obter os logins dos usuarios nao associados", e);
	}
	return listLoginByUsuarioAssociado;
}

grupoUsuarioTO.java

(…)

public class GrupoUsuarioTO implements Serializable {

private Integer idGrupo;
private Integer cdUsuario;

public Integer getCdUsuario() {

	return cdUsuario;
}

public void setCdUsuario(Integer cdUsuario) {

	this.cdUsuario = cdUsuario;
}

public Integer getIdGrupo() {

	return idGrupo;
}

public void setIdGrupo(Integer idGrupo) {

	this.idGrupo = idGrupo;
}

}


grupoForm.java

/**

  • Created on 20/01/2005
  • Title: Classe de negocio
  •       Description: Classe responsavel pelas regras de negocio do Grupo
    
  •       Usuario.
    

*/
public class GrupoUsuarioBO {
private int codigoUsuario;
private int sessionId;

public GrupoUsuarioBO(int cdUsuario, int sessionId) {
	this.codigoUsuario = cdUsuario;
	this.sessionId = sessionId;
}

(…)

/**
 * Obtem os logins dos grupos de usuario associados
 * 
 * @return List (Lista de UsuarioTO)
 * @param grupoUsuarioTO
 * @param tp_usuario
 */
public List obterLoginByGrupoUsuarioAssociado(
		GrupoUsuarioTO grupoUsuarioTO, String tp_usuario)
		throws BOException {

	ManterLoginDAOOracle manterLoginDAOOracle;
	List listLoginByUsuarioAssociado = new ArrayList();
	try {
		manterLoginDAOOracle = new ManterLoginDAOOracle(codigoUsuario, sessionId);
		listLoginByUsuarioAssociado = manterLoginDAOOracle.selectLoginByGrupoUsuarioAssociado(
				grupoUsuarioTO, tp_usuario);
	} catch (Exception e) {
		throw new BOException(
				"Erro ao obter os logins dos usuarios associados", e);
	}
	return listLoginByUsuarioAssociado;
}

(…)


grupoUusarioAction.java

/**

  • Created on 21/01/2005
  • Title: GrupoUsuarioAction
  • @version: 1.0
  • Description: Action responsavel pelo caso de uso Grupos X Usuarios
    /
    /
    *
  • @struts.action
  •  name="grupoUsuarioForm"
    
  •  path="/grupoUsuarioAction"
    
  •  scope="request"
    
  •  validate="false"
    
  •  parameter="method"
    
  • @struts.action-forward
  •  name="grupoUsuario"
    
  •  path="/jsp/grupoUsuario/grupoUsuario.jsp"
    
  • @struts.action-forward
  •  name="sucesso"
    
  •  path="/jsp/msg/sucesso.jsp"
    
  • @struts.action-exception
  •  type="java.lang.Exception"
    
  •  key="mensagem.erro.exception"
    
  •  path="/jsp/msg/erro.jsp"
    

*/

public class GrupoUsuarioAction extends DispatchAction {

private Logger logger = Logger.getLogger(GrupoUsuarioAction.class);

/**
 * Retorna uma lista de areas Finalasticas para a JSP grupoUsuario.jsp
 * @author: Asilva - POLITEC/SAO
 * @param ActionMapping, ActionForm, HttpServletRequest, HttpServletResponse
 * @return ActionFoward
 * @throws Exception
 */

(…)

/**
 * Retorna uma listas para a JSP grupoUsuario.jsp (usuarios nao pertencentes ao grupo selecionado)
 * @param ActionMapping, ActionForm, HttpServletRequest, HttpServletResponse
 * @return ActionFoward
 */
public ActionForward carregarUsuario(ActionMapping mapping,
		ActionForm form, HttpServletRequest request,
		HttpServletResponse response) throws Exception {

	try {
		GrupoUsuarioForm grupoUsuarioForm = (GrupoUsuarioForm) form;
		HttpSession session = request.getSession();
		LoginTO loginTO = (LoginTO) session.getAttribute("loginTO");
		
		GrupoBO grupoBO = new GrupoBO(loginTO.getCdUsuario().intValue(), session.getId().hashCode());
		GrupoUsuarioBO grupoUsuarioBO = new GrupoUsuarioBO(loginTO.getCdUsuario().intValue(), session.getId().hashCode());
		UsuarioTO usuarioTO = grupoUsuarioBO.obterUsuarioByLogin(loginTO);
		
			request.setAttribute("[b]listaUsuarioNaoAssociado[/b]",
				grupoUsuarioBO.obterLoginByGrupoUsuarioNaoAssociado(
						grupoUsuarioForm.getGrupoUsuarioTO(),
						grupoUsuarioForm.getLoginTO().getTpUsuario()));
		
		} catch (Exception e) {
		logger.error(
				"Erro no metodo carregarUsuario do GrupoUsuarioAction", e);
		throw e;
	} 
	return mapping.findForward("grupoUsuario");
}

grupoUsuario.jsp

List listaUsuarioAssociado = (List)request.getAttribute("listaUsuarioAssociado");
List listaUsuarioNaoAssociado = (List)request.getAttribute("listaUsuarioNaoAssociado");
List listaAreaFinalistica = (List)request.getAttribute("listaAreaFinalistica");
List listaGrupoUsuario = (List)request.getAttribute("listaGrupoUsuario");

%>

(…)

<!-- FORM–>
<html:javascript formName=“grupoUsuarioForm” dynamicJavascript=“true” staticJavascript=“true” />
<html:form action="/grupoUsuarioAction.do">

(…)

 &lt;tr&gt;
     	&lt;td width="145" align="right" valign="top"&gt;&lt;bean:message key='controleacesso.grupousuario.grupos'/&gt;:&lt;/td&gt;
     		&lt;td&gt;
			&lt;[b]html:select multiple=&quot;multiple&quot;[/b] property=&quot;grupoTO.idGrupo&quot; styleClass=&quot;textList&quot; style=&quot;width:435&quot; size=&quot;3&quot;&gt;
				&lt;logic:present name="listaGrupoUsuario"&gt;
     					&lt;html:options collection="listaGrupoUsuario" property="idGrupo" labelProperty="nmGrupo"/&gt;
     				&lt;/logic:present&gt;
					&lt;/html:select&gt;
		&lt;/td&gt;
&lt;/tr&gt;             					

(…)

&lt;input type="hidden" name="method"&gt;

&lt;html:hidden name="grupoUsuarioForm" property="usuarioTO.cdArea"/&gt;
&lt;html:hidden name="grupoUsuarioForm" property="usuarioTO.cdUsuario"/&gt;   	
&lt;html:hidden name="grupoUsuarioForm" property="grupoUsuarioTO.idGrupo"/&gt;
&lt;input type="hidden" name="listaUsuario"&gt;
&lt;input type="hidden" name="usuarioOrigem" value=""&gt;
&lt;input type="hidden" name="usuarioDestino"&gt;   	

</html:form>
<!-- FIM DA TABELA PRINCIPAL -->

</script>