Olá,
estou iniciando meus estudos com struts 2 annotation e surgiu uma dúvida:
Cenário:
classes: contato , contatoscont (agenda de um contato)
fkidcontato (contatoscont) referencia id de contato segue abaixo as classes com os mapeamentos:
ContatocontAction
package br.com.paulo.actions;
import java.util.List;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.InterceptorRef;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import org.hibernate.Session;
import org.hibernate.Transaction;
import br.com.paulo.classes.Contatoscont;
import com.googlecode.s2hibernate.struts2.plugin.annotations.SessionTarget;
import com.googlecode.s2hibernate.struts2.plugin.annotations.TransactionTarget;
@ParentPackage("hibernate-default")
@InterceptorRef("basicStackHibernate")
public class ContatoscontAction {
Contatoscont contatoscont;
List<Contatoscont> contatosconts;
@SessionTarget
Session hSession;
@TransactionTarget
Transaction hTransaction;
@Action(value="novocontatocont",
results={@Result (name="sucesso", location="/paginas/cadcontatoscont.jsp")})
public String novo(){
try{
return "sucesso";
}catch(Exception e){
e.printStackTrace();
return "erro";
}
}
@Action(value="salvarcontatocont",
results={@Result (name="sucesso", location="/paginas/listarcontatoscont.jsp")})
public String salvar(){
try{
hSession.saveOrUpdate(contatoscont);
return "sucesso";
}catch (Exception e) {
e.printStackTrace();
return "erro";
}
}
@SuppressWarnings("unchecked")
public List<Contatoscont> getContatoscont(){
try {
contatosconts = hSession.createCriteria(Contatoscont.class).list();
} catch (Exception e) {
e.printStackTrace();
}
return contatosconts;
}
@Action(value="listarcontatocont",
results={@Result(name="sucesso", location="/paginas/listarcontatoscont.jsp")})
public String listar(){
try {
getContatoscont();
return "successo";
} catch (Exception e) {
e.printStackTrace();
return "erro";
}
}
}
Contatocont (classe mapeada)
package br.com.paulo.classes;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
@Entity
@Table(name="contatoscont")
public class Contatoscont implements Serializable{
private static final long serialVersionUID = 1L;
private int id;
private String nome;
private String telefone;
private Contato contato;
@Id
@GeneratedValue
@Column(name="id")
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Column(name="nome")
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
@Column(name="telefone")
public String getTelefone() {
return telefone;
}
public void setTelefone(String telefone) {
this.telefone = telefone;
}
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name = "fkidContato")
public void setContato(Contato contato) {
this.contato = contato;
}
public Contato getContato() {
return contato;
}
}
formulario
<%@ taglib uri="/struts-tags" prefix="s" %>
<%@ taglib uri="/struts-dojo-tags" prefix="sx" %>
<%@ page language="java" pageEncoding="ISO-8859-1"%>
<s:head/>
<sx:head/>
<s:form action="salvarcontatocont">
<s:hidden name="contato.id" ></s:hidden>
<s:textfield label="Nome" name="contatoscont.nome" ></s:textfield>
<s:textfield label="Telefone" name="contatocontatocont.telefone" ></s:textfield>
<s:if test="contato==null">
<s:set name="btnMessage" value="%{'Incluir Contato'}"></s:set>
</s:if>
<s:else>
<s:set name="btnMessage" value="%{'Salvar Contato'}"></s:set>
</s:else>
<s:submit value="%{#btnMessage}"></s:submit>
</s:form>
Como setar o id do contato no formulario?