Enviar dados para Action

2 respostas
ViniciusNaka

boa tarde galera.

eu to desenvolvendo um sisteminha aqui na empresa com struts2 + jsp + tomcat 7, daí eu tenho uma jsp que lista todos os funcionarios cadastrados no banco.

só a parte do form

<s:form action="excluirFuncionario">
<table>
	<tr>
		<td>Id</td>
		<td>Nome</td>
		<td>E-mail</td>
		<td>Gestor</td>
	</tr>
	<!-- Loop para exibir os funcionarios -->
	<c:forEach var="funcionario" items="${funcionarioDAO.funcionarios}">
		<tr id="func">
			<td id="id_func">${funcionario.idFuncionario}</td>
			<td id="nome_func">${funcionario.nome}</td>
			<td id="email_func">${funcionario.email}</td>
			<c:choose>
				<c:when test="${funcionario.tipoFuncionario == true}">
					<td id="descricao">Sim</td>
				</c:when>
				<c:otherwise>
					<td id="descricao">Não</td>
				</c:otherwise>
			</c:choose>			
			<td> 
				<input type="submit" value="Excluir" name="excluir" />  
			</td>
		</tr>
		
	</c:forEach>
</table>
</s:form>

tem esse botao para excluir o funcionario, ai que esta o meu problema.
como que eu faço para enviar os dados da linha que eu cliquei no botao excluir para minha Action ?

ex:

minha listagem aparece assim:
[list]
Id Nome E-mail Gestor Botão
1 Adriano [email removido] Não Excluir
2 Alberto [email removido] Sim Excluir
3 Alessandra [email removido] Não Excluir
4 Alexandre [email removido] Sim Excluir
[/list]
se eu clicar na linha do id 4 eu queria passar os dados do id 4 para a Action para depois deleta-lo do banco.

desde já agradeço a atenção.

abs

2 Respostas

B

Olá,

Passa o codigo do funcionário para uma action de exclusão.

Exemplo:
Codigo 1
Funcoinario Bruno

Passa somente o codigo 1 para a action, e fazer o remover a partir do codigo.

Dentro do JSP, faça uma requisição do tipo get
Crie um link na hora de listar o funcionário.

<a href="DeletarFuncionar?codigo=${funcionario.codigo}"> Deletar </a>

Aqui está acontecendo o seguinte: Você está criando um link para a action DeletarFuncionário, e passando como um parâmetro (código) e o valor que será o código do funcionário.
Será um link html mesmo.

Quando você criar a Action DeletarFuncionário, você precisará de um variável chamada codigo e criar o método Set desta variável

ViniciusNaka:
boa tarde galera.

eu to desenvolvendo um sisteminha aqui na empresa com struts2 + jsp + tomcat 7, daí eu tenho uma jsp que lista todos os funcionarios cadastrados no banco.

só a parte do form

<s:form action="excluirFuncionario">
<table>
	<tr>
		<td>Id</td>
		<td>Nome</td>
		<td>E-mail</td>
		<td>Gestor</td>
	</tr>
	<!-- Loop para exibir os funcionarios -->
	<c:forEach var="funcionario" items="${funcionarioDAO.funcionarios}">
		<tr id="func">
			<td id="id_func">${funcionario.idFuncionario}</td>
			<td id="nome_func">${funcionario.nome}</td>
			<td id="email_func">${funcionario.email}</td>
			<c:choose>
				<c:when test="${funcionario.tipoFuncionario == true}">
					<td id="descricao">Sim</td>
				</c:when>
				<c:otherwise>
					<td id="descricao">Não</td>
				</c:otherwise>
			</c:choose>			
			<td> 
				<input type="submit" value="Excluir" name="excluir" />  
			</td>
		</tr>
		
	</c:forEach>
</table>
</s:form>

tem esse botao para excluir o funcionario, ai que esta o meu problema.
como que eu faço para enviar os dados da linha que eu cliquei no botao excluir para minha Action ?

ex:

minha listagem aparece assim:
[list]
Id Nome E-mail Gestor Botão
1 Adriano [email removido] Não Excluir
2 Alberto [email removido] Sim Excluir
3 Alessandra [email removido] Não Excluir
4 Alexandre [email removido] Sim Excluir
[/list]
se eu clicar na linha do id 4 eu queria passar os dados do id 4 para a Action para depois deleta-lo do banco.

desde já agradeço a atenção.

abs

ViniciusNaka

Olá bffermino,

eu fiz o que vc sugeriu, porém ao clicar no link, consta esse erro…

java.lang.NoSuchMethodException: voxage.com.br.actions.FuncionarioAction.excluirFunc()

java.lang.Class.getMethod(Unknown Source)

org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.getActionMethod(AnnotationValidationInterceptor.java:75)

org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:47)

com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)

com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)

com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)

com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)

com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)

com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)

com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)

eu criei uma classe FuncionarioAction e la eu tenho até o momento um método cadastrar e um excluir…

public class FuncionarioAction extends ActionSupport{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	private Funcionario funcionario;
	
	@Action(value="cadastrarFuncionario") 	
	public String cadastrarFunc() throws SQLException{
		FuncionarioDAO funcDAO = new FuncionarioDAO();
		boolean funcExiste = funcDAO.getFuncionario(funcionario);
		if(funcExiste != true){
			funcDAO.cadastrar(funcionario);
			return "ok";
		} else {
			return "error";
		}

	}

	@Action(value="excluirFuncionario")	
	public String excluirFunc(int idFuncionario) throws SQLException{
		FuncionarioDAO funcDAO = new FuncionarioDAO();
		try {
			funcDAO.deletarFuncionario(idFuncionario);
		} catch (Exception e) {
			e.printStackTrace();
			return "error";
		}		
		return "ok";
	}

	public Funcionario getFuncionario() {
		return funcionario;
	}

	public void setFuncionario(Funcionario funcionario) {
		this.funcionario = funcionario;
	}

}

no meu struts.xml eu passo o método…

<struts>
	<constant name="struts.enable.DynamicMethodInvocation" value="false" />
	<constant name="struts.devMode" value="false" />
	
	<package name="" extends="struts-default">
		<action name="cadastrarFuncionario" class="voxage.com.br.actions.FuncionarioAction" method="cadastrarFunc"> 
			<result name="input" type="dispatcher">/cadastrar-funcionario.jsp</result>
			<result name="ok" type="dispatcher">/lista-funcionario.jsp</result>
			<result name="error" type="dispatcher">/cadastrar-funcionario.jsp</result>		
		</action>
		
		 
		<action name="excluirFuncionario" class="voxage.com.br.actions.FuncionarioAction" method="excluirFunc"> 
			<result name="ok" type="dispatcher">/lista-funcionario.jsp</result>
			<result name="error" type="dispatcher">/lista-funcionario.jsp</result>		
		</action>
		<!-- adicionar as actions aqui  --> 		
	</package>	 
</struts>

vc sabe o pq desse erro? to pesquisando aqui, mas até o momento nada :frowning:

abs

Criado 18 de fevereiro de 2011
Ultima resposta 19 de fev. de 2011
Respostas 2
Participantes 2