Olá pessoal.
Criei uma pequena aplicação (seguindo um tutorial 5*) usando strus2 na qual o utilizador apenas insere o primeiro e ultimo nome e a idade.
Em caso de sucesso a aplicação mostra ao utilizador a pagina success.jsp com a idade do utilizador em dias e o nome introduzido.
Agora estava a tentar guardar os dados inseridos numa base de dados usando o hibernate.
Para começar achei bem separar o POJO (gets e sets) do execute() da classe que defini. Criei entao a classe personPOJO e personAction.
O problema é que agora nada funciona porque não consigo obter os dados introduzidos pelo utilizador na form.
ERROR [ParametersInterceptor] ParametersInterceptor - [setParameters]: Unexpected Exception catched: Error setting expression 'age' with value '[Ljava.lang.String;@73327332'
ERROR [ParametersInterceptor] ParametersInterceptor - [setParameters]: Unexpected Exception catched: Error setting expression 'firstName' with value '[Ljava.lang.String;@72747274'
ERROR [ParametersInterceptor] ParametersInterceptor - [setParameters]: Unexpected Exception catched: Error setting expression 'lastName' with value '[Ljava.lang.String;@72d472d4'
Aqui estao as 2 classes e o ficheiro struts-form.xml:
PersonPOJO.java:
package form.model;
import com.opensymphony.xwork2.ActionSupport;
public class PersonPOJO extends ActionSupport {
String firstName;
String lastName;
String age;
String message;
int ageDays;
// GETTERS and SETTERS
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public int getAgeDays() {
return ageDays;
}
public void setAgeDays(int ageDays) {
this.ageDays = ageDays;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
PersonAction.java
package form.action;
import com.opensymphony.xwork2.ActionSupport;
import form.model.*;
public class PersonAction extends ActionSupport{
private PersonPOJO personPOJO;
public String execute(){
this.personPOJO = new PersonPOJO();
if( personPOJO.getAge() != null && personPOJO.getFirstName() != null && personPOJO.getLastName()!=null){
personPOJO.setAgeDays(Integer.parseInt(personPOJO.getAge())*365);
System.out.print("PASSOU!!!!!! --------------------------------");
personPOJO.setMessage("Sucesso! Esta mensagem foi gerada na Action");
return SUCCESS;
}
else{
personPOJO.setMessage("Erro! Esta mensagem foi gerada na Action");
return ERROR;
}
}
}
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>
<package name="batatas2" namespace="/pages" extends="struts-default">
<action name="PersonAction_GO" class="form.action.PersonAction">
<result name="error" type="dispatcher">/pages/erro.jsp</result>
<result name="success" type="dispatcher">/pages/sucesso.jsp</result>
</action>
</package>
</struts>
PersonForm.jsp
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Dados Pessoais</title>
</head>
<body>
<div align="center">
<s:form name="form" action="PersonAction_GO">
<s:textfield id="firstName" label="First Name" name="firstName"/>
<s:textfield id="lastName" label="Last Name" name="lastName"/>
<s:textfield id="age" label="Age" name="age"/>
<s:submit value="OK"/>
</s:form>
</div>
</body>
</html>
Peço desculpa pelo post gigante mas preciso de ideias.
Obrigado pela ajuda pessoal.
[size="11"][color="red"]* Editado: Lembre-se de utilizar BBCode em seus códigos - Carneiro[/color][/size] :joia:
