i have a Organization.java class that has a field named "name" and get and set
methods.
Then i use a Project.java class that extends Organization. Organization.java
also has an User.java class that also has a "name" field. I use the Project
class as a bean that is populated after a form is being submitted. The problem
is that ( Project) Organization.name is not being initialized when (Project)
Organization.User.name IS being initialized. Can anyone help me telling me what
i've done wrong? I've been checking my field and method names for a long tine
now and i'm stuck, though everything seems to be in good shape.
My classes and various files follow:
// Organization.java
public class Organization {
private int id;
private User[] users;
private String name="no name yet";
private User president;
public String toString(){
return "ID:"+id+"; Users:<not yet>"+"; Name:"+name+";
President:"+president.getName();
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setPresident(User president) {
this.president = president;
}
public User getPresident() {
return president;
}
}
// Project.java
public class Project extends Organization{
public Project(){
super();
}
}
// 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>
<constant name="struts.devMode" value="true" />
<package name="translators" extends="struts-default">
<action name="test" class="net.translators.actions.TestAction"
method="execute">
<result name="success">/test.jsp</result>
</action>
<action name="createproject"
class="net.translators.actions.CreateProjectAction" method="execute">
<result name="success">/tests/message.jsp</result>
<result name="input">/tests/createproject.jsp</result>
</action>
<action name="create-a-project"
class="net.translators.actions.CreateProjectAction" method="dummy">
<result name ="success">/tests/createproject.jsp</result>
</action>
</package>
</struts>
// test.jsp has this line ("Point of entrance")
<a href="<s:url action="tests/create-a-project"/>">Create a Project</a>
// createproject.jsp has this form
<s:form action="createproject">
<s:textfield key="project.name"/>
<s:textfield key="project.president.name"/>
<s:submit label="Submiter"/>
</s:form>
// the resource file that is named after the Action class:
project.name=Projects name
project.users=Multiple Users
project.president.name=Presidents name
project.id=DB ID
// The action class
public class CreateProjectAction extends ActionSupport{
private Project project =null;
private String message = "NULL";
public void setProject(Project pr){
this.project = pr;
}
public String execute(){
if (project !=null ){
message = "Execute: "+project.toString();
}
return SUCCESS;
}
@SkipValidation
public String dummy(){
return SUCCESS;
}
public void validate(){
if(project ==null || project.getName().length()==0){
addFieldError( "project.name", "Name is required." );
}
message = "Validate";
}
public void setMessage(String message) {
this.message = message;
}
public String getMessage() {
return message;
}
}