Struts 2 - jsp [Resolvido]

5 respostas
R

Como ficaria o em jsp+struts2 para a inclusão de um device na seguinte tabela

@Entity
public class ServiceOrder {
	
	@Id
	@GeneratedValue		
	private Integer id;
	    
    @OneToMany(mappedBy = "serviceOrder", fetch = FetchType.EAGER)
    @Cascade(CascadeType.ALL) 
    private List<ServiceOrderDevice> devices;
usei isso mas não deu certo
<s:form id="serviceOrderForm" action="serviceOrder" theme="simple">
    <tr height=20>
    <td style="text-align: right; width: 120">
        Model:&nbsp;
    </td>
    <td>
    // o que coloco aqui para incluir um device??? Esse código abaixo da 'Unexpected Exception caught setting'	
    <s:textarea name="serviceOrder.devices[0].model" cssStyle="width:400px;" />
    </td>
    </tr>
</s:form>

o q faço?

grato...

5 Respostas

R

Oi,
Vc poderia postar sua action ?
Vc colocou na sua action o atributo serviceOrder e criou os metodos get e set para esse atributo ?

R

oia ela ai...

public class ServiceOrderAction {
	
	private static final Logger log = Logger.getLogger(ServiceOrderAction.class.getName());
	private IServiceOrderDAO serviceOrderDAO;
	private List<ServiceOrder> serviceOrderList;
	
	private ServiceOrder serviceOrder;

	public IServiceOrderDAO getServiceOrderDAO() {
		return serviceOrderDAO;
	}

	public void setServiceOrderDAO(IServiceOrderDAO serviceOrderDAO) {
		this.serviceOrderDAO = serviceOrderDAO;
	}


	public List<ServiceOrder> getServiceOrderList() {
		return serviceOrderList;
	}

	public void setServiceOrderList(List<ServiceOrder> serviceOrderList) {
		this.serviceOrderList = serviceOrderList;
	}

	public ServiceOrder getServiceOrder() {
		return serviceOrder;
	}

	public void setServiceOrder(ServiceOrder serviceOrder) {
		this.serviceOrder = serviceOrder;
	}

	public ServiceOrderAction() {
		log.info("\n\nConstrutor da Classe ServiceOrderAction\n\n");
	}
	
	public String list() {
		serviceOrderList = serviceOrderDAO.findAll();
		return "list";
	}
	
	public String insert() {
		serviceOrder = new ServiceOrder();
		return "insert";
	}
	
	public String save() {		
		serviceOrderDAO.save(serviceOrder);
		return insert();
		
	}	
}
R

Olá só

1 - sua action tem que extender ActionSupport, para ser considerada como action.

2 - vc mapeou a action no struts.xml ?

3 - Qdo vc der o submit no formulário

ele vai executar o método execute() da action. Mas vc não implementou ele ?!?
Caso vc queria executar outro método diferente de execute, vc tem que passar o nome do método.
Um forma de fazer isso é :

Ps. Existe outras maneiras.

Verifique esses detalhes, depois veja se qdo vc dê o submit no form vai para a action.

R

estou configurando as actions por anotação

essa ServiceOrderAction por exemplo tem o seguinte cabeçalho...

@Bean(scope=Scope.SESSION)

/**
 * Struts 2 - Result Pages
 */

@Results({
	@Result(name="insert", 	  value="/WEB-INF/jsp/serviceOrder/insert.jsp"),
})
public class ServiceOrderAction {

esse código esta salvando a ServiceOrder, e também salva uma ServiceOrderDevice caso seja setado manualmente no método save,
mas eu preciso incluir pelo form. O seguinte trecho...

<s:textarea name="serviceOrder.devices[0].model" cssStyle="width:400px;" />

não parece ser suficiente... Já que estou usando annotation vi no google que provavelmente ParametersInterceptor ou PrepareInterceptor (não sei ainda qual o certo) pode resolver o problema, o que você acham?

grato

R

criei na classe ServiceOrderAction atributo devices (com get e set)

a inserção ficou

e o principal que estava faltando foi o arquivo ServiceOrderAction-conversion.properties com o seguite código…

e foi isso…

Criado 17 de julho de 2008
Ultima resposta 17 de jul. de 2008
Respostas 5
Participantes 2