Struts2 - Como receber dados de um form

Como faço pra receber esses atributos do form pra gerar um objeto Produto?

Feito isso, quem devo chamar para incluir os dados no banco? Como é feito o esquema/organização/pacotes/camadas das classes? Também tô usando Hibernate

Produto.java

public class Produto {
	
	private String nome;
	private String marca;
	private Integer estoque;
	private double preco;
	private Integer id;
}
//construtor, getters e setters

ProdutoAction.java

public class ProdutoAction extends ActionSupport {

	private Produto produto;

	public String execute() { }
}

Produto.jsp

// código básico
	<s:form action="ProdutoAction">
		<s:textfield label="Nome" name="produto.nome"/>
		<s:textfield label="Marca" name="produto.marca"/>
		<s:textfield label="Preco" name="produto.preco"/>
		<s:textfield label="Estoque" name="produto.estoque"/>
		<s:submit/>
	</s:form>

Vc quer recuperar os dados dentro de um Action é isso, se for é so vc criar uma instancia dentro do do Form dentro do Action, mais isso se vc tiver usando uma classe separada por exemplo, como vc tem uma classe produto dentro do se Form vc vai ter uma instancia para essa classe Produto:

Ex:

public class ProdutoForm extends ActionForm {
Produto produto = new Produto();

//Métodos get e setter

}

lembrando que vc tem que ter os métodos get e set para essa instancia dentro de seu ActionForm, e para recuperar esse formulario dentro do Action vc recupera da seguinte forma…

public class ProdutoAction extends Action{

public ActionForward execute(ActionMapping map, ActionForm form,
HttpServletRequest req, HttpServletResponse resp) throws Exception{

      ProdutoForm f = (ProdutoForm) form;
      Produto prod = f.getProduto();

}
}

pronto assim vc tem o formulário com todos os parametros enviado pela requisição, é so trabalhar com eles.

vc cria um get e um set para o objeto produto na action.
no xml de configuracao do struts2 vc declara o mapeamento da action.

se td tiver cetinho vc pode chamar produto dentro do metodo execute. produto.getNome() etc

[quote=sbguimaraes]Vc quer recuperar os dados dentro de um Action é isso, se for é so vc criar uma instancia dentro do do Form dentro do Action, mais isso se vc tiver usando uma classe separada por exemplo, como vc tem uma classe produto dentro do se Form vc vai ter uma instancia para essa classe Produto:

Ex:

public class ProdutoForm extends ActionForm {
Produto produto = new Produto();

//Métodos get e setter

}

lembrando que vc tem que ter os métodos get e set para essa instancia dentro de seu ActionForm, e para recuperar esse formulario dentro do Action vc recupera da seguinte forma…

public class ProdutoAction extends Action{

public ActionForward execute(ActionMapping map, ActionForm form,
HttpServletRequest req, HttpServletResponse resp) throws Exception{

      ProdutoForm f = (ProdutoForm) form;
      Produto prod = f.getProduto();

}
}

pronto assim vc tem o formulário com todos os parametros enviado pela requisição, é so trabalhar com eles.[/quote]

O Cara ta falando de Struts 2.x, amigo hehehe

Os objetos são instanciados e injetados na sua action normalmente… vc só precisa colocar os métodos sets deles.

Fiz isso!
Mas não tem dado certo. O metódo inserir() precisa retornar alguma coisa?
Veja:

Form

// cabeçalhos
	<s:form action="produto">
		<s:textfield label="Nome" name="produto.nome"/>
		<s:textfield label="Marca" name="produto.marca"/>
		<s:textfield label="Preco" name="produto.preco"/>
		<s:textfield label="Estoque" name="produto.estoque"/>
		<s:submit method="inserir"/>
	</s:form>

struts.xml

//cabeçalhos
		<action name="produto" class="produto.ProdutoAction">
			<result>/pages/produtoForm.jsp</result>
		</action>

ProdutoAction

//cabeçalhos
public class ProdutoAction extends ActionSupport {

	private static final long serialVersionUID = 1L;
	private Produto produto;
	private ProdutoDAO produtoDAO;

	public ProdutoAction() {
		this.produtoDAO = new ProdutoDAO();
	}
	
	public String execute() {
		return SUCCESS;
	}
		
	public String inserir() {
		produtoDAO.inserir(produto);
		return "SUCCESS";
	}
	
	public Produto getProduto() { return this.produto; }
	public void setProduto(Produto produto) { this.produto = produto; }
}

o que está errado?

Desenterrando este tópico das cavernas… mas eu realmente preciso aprender Struts… e minha dúvida é igual a do nosso amigo aqui.

Não entendi muito bem como isso funciona… Devo fazer uma Classe Action, uma ActionForm e um Form.jsp??
tipo

Login.jsp -> LoginForm.java -> LoginAction.java… + Login.java<>------ Usuario.java ??