Enviar parametros via ur

Pessoa, tenho uma tela com 4 link (cadastrar, deletar, alterar, pesquisar) e alguns campos. Como faço para passar via url os valores dos campos do formulario? Estou usando Struts 2.

tipo, tenho o seguinte campo:

<s:textfield name=“pasta.valorIndice1” size=“60” />

como faço para enviar o valor desse campo em um link??

ja tentei assim:

cadastrar

Obs: nao usei um <s:submit/> pois nao daria certo com quanto submits no mesmo form.

grato a ajuda e sugestoes

http://www.guj.com.br/posts/list/93651.java

Fiaux, pelo q eu entendi…no topico q vc me indico, o parametro q ele vai ser passao via url ja vem da Action, num é isso?
No meu caso tenho que pegar o valor q foi digitado no textfield e enviar via url.

Então você pega esse valor na action (usa uma variavel e mesmo nome na JSP e action) e da um redirect para onde você quer, passando esse parâmetro. Cria um submit para isso.

Fiaux,
Tentei dessa maneira e deu erro: equal symbol expected:

<s:url id=“url” action=“cadastroPasta.action”>
<s:param name=“pasta.valorIndice1” value="<s:property value=“pasta.valorIndice1”>"/>
</s:url>
<s:a href="%{url}">Link</s:a>

e tentei dessa outra forma
<s:url id=“url” action=“cadastroPasta.action”>
<s:param name=“pasta.valorIndice1” value=“pasta.valorIndice1”/>
</s:url>
<s:a href="%{url}">Link</s:a>

tmb sem sucesso pois o objeto Pasta chega null.

Tag struts dentro de tag struts não funciona.

Minha sugestão é que você criei um submit para seu formulário. Faça o bind de campos do formulário com atributos na action. Faça um redirect do struts para outra action e passe como parâmetro, podendo ser via annotation ou xml.

Tag struts dentro de tag struts não funciona.

Minha sugestão é que você criei um submit para seu formulário. Faça o bind de campos do formulário com atributos na action. Faça um redirect do struts para outra action e passe como parâmetro, podendo ser via annotation ou xml.

nao posso usar submit, pois sao 4 links em um mesmo form, ou seja seriam 4 submits no mesmo form.

Porque não? Aponta um para cada método diferente.

tipo se eu tenho um form com uma action e 4 submits…em qualquer submiti q eu clicar vai para sempre na mesma action.

[quote=R?ulo Augusto da Silva]tipo se eu tenho um form com uma action e 4 submits…em qualquer submiti q eu clicar vai para sempre na mesma action.

[/quote]
Daí você bota o struts para redirecionar para outra action que você quer, a qual corresponde àquela ação clicada.

entendi…mas como faço isso??

Tentei via annotation…mas acho q deve tar algo errado, pois o objeto esta indo null para a outra action…

Criei uma action FrontController responsavel por fazer os redirecionamento. Dependendo do valor do campo acao, q vem da jsp ele faz o redirecionamento

@Result( name = “cadastrar”, value = “cadastroPasta.action”, type = ServletActionRedirectResult.class, params = { “pasta.valorIndice1”, “${pasta.valorIndice1}” } )
public class FrontController extends ActionSupport

public String acao;

   public String getAcao() {
	return acao;
}


public void setAcao(String acao) {
	this.acao = acao;
}

  public String controller() {
	
  if(acao.equalsIgnoreCase("cadastrar")) {
						
	return "cadastrar";
  } 

}

A action que vai ser dar o redirect tem que conseguir enviar esse valor pasta.valorIndice1. Ou seja, tem que haver um get para ele.

fiaux, entendi…implementei os metodos gets…
Agora estou com um problema, pois a minha action nao esta consiguindo fazer o redirecionamento…Nao encontra o redirecionamento…Da o seguinte erro:

SEVERE: Could not find action or result
No result defined for action br.com.simple.action.FrontController and result cadastrar - action - file:/R:/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp1/wtpwebapps/simple/WEB-INF/classes/struts.xml:74:50

segue o codigo fonte:

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>
	<!--  Localização  -->
	<constant name="struts.locale" value="pt_BR"/> 
	
	<!-- habilita o uso de outros métodos de action internamente na classe action -->  
     <constant name="struts.enable.DynamicMethodInvocation" value="true" />  
     <constant name="struts.devMode" value="false" />
	
	<!-- Modo de desenvolvimento: recarrega alterações e reporta erros que poderiam ser ignorados -->
	<constant name="struts.devMode" value="true" />
	
	<!-- Define um pacote de classes. -->
	<package name="simpleDefault" extends="struts-default">
		
		<action name="action1" method="controller"
				class="br.com.simple.action.FrontController">
		</action>
		
		<action name="action2" method="teste"
				class="br.com.simple.action.UsuarioAction">
			<result>/simple/pages/home.jsp</result>
		</action>
		
	</package>

</struts>

WEB.XML

<?xml version="1.0" encoding="UTF-8"?>
<web-app 
	id="WebApp_ID" 
	version="2.4" 
	xmlns="http://java.sun.com/xml/ns/j2ee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	
	<!-- Nome da WebApp -->
	<display-name>simple</display-name>
	
	<welcome-file-list>
		<welcome-file>pages/index.jsp</welcome-file>
	</welcome-file-list>
	
	<!-- Filtros -->
	<filter>
        <filter-name>strutsFilter</filter-name>
        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
    </filter>

	<!-- Mapeamento dos filtros -->
    <filter-mapping>
        <filter-name>strutsFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

	<resource-ref>
		<description>postgreSQL Datasource example</description>
		<res-ref-name>jdbc/postgres</res-ref-name>
		<res-type>javax.sql.DataSource</res-type>
		<res-auth>Container</res-auth>
	</resource-ref>
    
</web-app>

JSP

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@taglib uri="/struts-tags" prefix="s" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<script language="Javascript">
function setCadastrar() {
	document.getElementById('acao').value = 'cadastrar';
}
function setDeletar() {
	document.getElementById('acao').value = 'deletar';
}
function setAlterar() {
	document.getElementById('acao').value = 'alterar';
}
function setProcurar() {
	document.getElementById('acao').value = 'procurar';
}
</script>
<title>Menu</title>
</head>
<body>
	<s:form action="action1" method="POST" >
		<s:textfield name="usuario.nome" label="Nome"  />
		<s:submit value="Cadastrar" onclick="setCadatrar();" />
		<s:submit value="Deletar"   onclick="setDeletar();" />
		<s:submit value="Alterar"   onclick="setAlterar();" />
		<s:submit value="Procurar"  onclick="setProcurar();" />
		<s:hidden id="acao" name="acao" />
	</s:form>
</body>
</html>

ACTION DE REDIRECIONAMENTO

package br.com.simple.action;

import org.apache.struts2.config.Result;
import org.apache.struts2.dispatcher.ServletActionRedirectResult;
import br.com.simple.model.Usuario;
import com.opensymphony.xwork2.ActionSupport;

@Result( name = "cadastrar", value = "action2", type = ServletActionRedirectResult.class, params = { "usuario.nome", "${usuario.nome}" } )
public class FrontController extends ActionSupport {

	private String acao;
	private Usuario usuario;
	private String nome;
	
	public String getNome() {
		return this.nome;
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getAcao() {
		return acao;
	}

	public void setAcao(String acao) {
		this.acao = acao;
	}

	public String controller() {
		
		if(acao.equalsIgnoreCase("cadastrar")) {
			return "cadastrar";
		}
		return "error";
	}
}

Tem alguma coisa errada??? Preciso fazer outra configuração no web.xml ou struts.xml?
Agradeço a ajuda.

Tentei tambem, via xml ao inves de annotation…

<action name="action1" method="controller"
				class="br.com.simple.action.FrontController">
			<result name="cadastrar" type="redirect-action">
				<param name="actionName">action2</param> 
				<param name="usuario.nome">${usuario.nome}</param>
			</result>
			<result name="error">/pages/error.jsp</result>
		</action>

…o parâmetro chega a action de destino, porém no console é gerado um erro:

WARNING: Caught OgnlException while setting property ‘usuario.nome’ on type ‘org.apache.struts2.dispatcher.ServletActionRedirectResult’.
ognl.NoSuchPropertyException: org.apache.struts2.dispatcher.ServletActionRedirectResult.usuario
at ognl.ObjectPropertyAccessor.getProperty(ObjectPropertyAccessor.java:122)
at com.opensymphony.xwork2.util.OgnlValueStack$ObjectAccessor.getProperty(OgnlValueStack.java:58)
(…)

ja tenho na minha lib os jar commons-logging e ognl alem de outros