Struts2: problema com direionamento de acoes

2 respostas
P

Opa :smiley:

Tenho 1 tela que tem uma tabela que lista todos os registro e para cada registro, eu tenho a opcao de alterar e excluir e tenho um outro botao que insere um novo registro. O problema que esta ocorrendo, eh q todas minhas chamadas estao caindo na mesma acao. Nao sei se estou fazendo algo errado ou se tem algo mto estranho no struts2.

Segue meu struts.xml, minha Action e minha jsp que faz as chamadas:

xml

<package name="usuario" namespace="/usuario" extends="struts-default">
	
	<action name="carregarCombos" class="com.oesia.parkingrio.usuario.action.ShowUsuarioAction">
		<result>/pages/usuario/usuario.jsp</result>
	</action>

	<action name="listUsers" class="com.oesia.parkingrio.usuario.action.ListUsuariosAction">
		<result>/pages/usuario/listarUsuarios.jsp</result>
	</action>

	<action name="doCrud!*" class="com.oesia.parkingrio.usuario.action.UsuarioCRUDAction" method="removerUsuario">
		<result name="success" type="chain">listUsers</result>
	</action>
	
	<action name="doCrud!*" class="com.oesia.parkingrio.usuario.action.UsuarioCRUDAction" method="carregarUsuario">
		<result type="chain">carregarCombos</result>
	</action>
	
	<action name="doCrud!*" class="com.oesia.parkingrio.usuario.action.UsuarioCRUDAction" method="inserirUsuario">
		<result name="success" type="chain">listUsers</result>
	</action>
</package>

JSP

<%@ taglib prefix="s" uri="/struts-tags"%>

<html>
<head>

</head>

<body>
	<s:form>
	<s:div>
		<table border="1" bordercolor="blue" cellpadding="2" cellspacing="2">
		<tr>
			<td><a href="../usuario/carregarCombos.action">Cadastrar Novo Usuario</a> </td>
		</tr>
      <tr>
            <td><b>Usuarios Registrados</b></td>
      </tr>
      <tr>
            <td style="width: 320px; text-align: center;">Nome</td>
            <td style="width: 160px; text-align: center;">Matricula</td>
            <td style="width: 160px; text-align: center;">Data De Nascimento</td>
            <td style="width: 160px; text-align: center;">PIS</td>
            <td style="width: 160px; text-align: center;">CPF</td>
      </tr>
      
            <s:iterator value="usuarios">
            <tr>
                  <td><s:property value="nome"/></td>
                  <td><s:property value="numMatricula"/></td>
                  <td><s:date name="dtNascimento" format="dd/MM/yyyy"/></td>
                  <td><s:property value="numPis"/></td>
                  <td><s:property value="cpf"/></td>
                  <td>
                  <s:url id="linkAlterar" action="doCrud!carregarUsuario.action" >
                        <s:param name="usuarioForm.id"><s:property value="id"/> </s:param>
                  </s:url>
				  <s:a href="%{linkAlterar}">Alterar</s:a>                  
                  <s:url id="linkRemover" action="/doCrud!removerUsuario.action" >
                        <s:param name="usuarioForm.id"><s:property value="id"/> </s:param>
                  </s:url>
				  <s:a href="%{linkRemover}">Remover</s:a>
           

                  </td>

            </tr>
    </s:iterator>
      
      </table>
      </s:div>
	</s:form>

</body>

</html>

Action

public class UsuarioCRUDAction  extends ActionSupport  {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	private UsuarioForm usuarioForm;
	
	public String inserirUsuario(){
		UsuarioDelegate usuarioDelegate = new UsuarioDelegate();
		if(usuarioDelegate.inserirUsuario(usuarioForm)){
			return SUCCESS;
		}
		return ERROR;
	}

	public String removerUsuario(){
		UsuarioDelegate usuarioDelegate = new UsuarioDelegate();
		if(usuarioDelegate.removerUsuario(usuarioForm)){
			return SUCCESS;
		}
		return ERROR;
	}
	
	public String alterarUsuario(){
		UsuarioDelegate usuarioDelegate = new UsuarioDelegate();
		if(usuarioDelegate.removerUsuario(usuarioForm)){
			return SUCCESS;
		}
		return ERROR;
	}
	
	public String carregarUsuario(){
		UsuarioDelegate usuarioDelegate = new UsuarioDelegate();
		usuarioForm = usuarioDelegate.carregarUsuario(usuarioForm);
		return SUCCESS;
	}
	
	public UsuarioForm getUsuarioForm() {
		return usuarioForm;
	}

	public void setUsuarioForm(UsuarioForm usuarioForm) {
		this.usuarioForm = usuarioForm;
	}

2 Respostas

V

Cara, isso aqui ta errado:

<action name="doCrud!*" class="com.oesia.parkingrio.usuario.action.UsuarioCRUDAction" method="removerUsuario">   
        <result name="success" type="chain">listUsers</result>   
    </action>   
       
    <action name="doCrud!*" class="com.oesia.parkingrio.usuario.action.UsuarioCRUDAction" method="carregarUsuario">   
        <result type="chain">carregarCombos</result>   
    </action>   
       
    <action name="doCrud!*" class="com.oesia.parkingrio.usuario.action.UsuarioCRUDAction" method="inserirUsuario">   
       <result name="success" type="chain">listUsers</result>   
 </action>

Tenta assim

<action name="doCrud!*" class="com.oesia.parkingrio.usuario.action.UsuarioCRUDAction" method="{1}">   
        <result name="success" type="chain">listUsers</result>   
</action>

Dessa forma o metodo que sera executado será o que virá depois do nome da action (doCrud!)

V

O problema vai ser na chamada da página, sugiro que utilize o tiles com WildCards também.

Criado 25 de março de 2009
Ultima resposta 25 de mar. de 2009
Respostas 2
Participantes 2