Message There is no Action mapped for action name
Bon =jour, je viens de commencer à m'initier à struts 2 et dès le premier tutoriel que je trouve pour faire un "hello world" j'ai un problème pour récupérer l'action demandée.
Je suis sûr que j'ai du passer à côté d'un truc à la con mais je ne vois pas ... j'ai comparer plusieurs projets et je ne trouve pas la solution.
J'ai une archive de mon projet eclipse ici.
Voici aussi les logs de tomcat :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
INFO: Déploiement du descripteur de configuration struts2Tutoriel.xml
21 nov. 2010 23:34:32 com.opensymphony.xwork2.util.logging.jdk.JdkLogger info
INFO: Parsing configuration file [struts-default.xml]
21 nov. 2010 23:34:32 com.opensymphony.xwork2.util.logging.jdk.JdkLogger info
INFO: Unable to locate configuration files of the name struts-plugin.xml, skipping
21 nov. 2010 23:34:32 com.opensymphony.xwork2.util.logging.jdk.JdkLogger info
INFO: Parsing configuration file [struts-plugin.xml]
21 nov. 2010 23:34:32 com.opensymphony.xwork2.util.logging.jdk.JdkLogger info
INFO: Unable to locate configuration files of the name struts.xml, skipping
21 nov. 2010 23:34:32 com.opensymphony.xwork2.util.logging.jdk.JdkLogger info
INFO: Parsing configuration file [struts.xml]
21 nov. 2010 23:34:33 org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Déploiement du descripteur de configuration manager.xml
21 nov. 2010 23:34:34 org.apache.catalina.startup.HostConfig deployWAR
INFO: Déploiement de l'archive struts2-blank-2.2.1.war de l'application web
21 nov. 2010 23:34:34 com.opensymphony.xwork2.util.logging.jdk.JdkLogger info
INFO: Parsing configuration file [struts-default.xml]
21 nov. 2010 23:34:35 com.opensymphony.xwork2.util.logging.jdk.JdkLogger info
INFO: Unable to locate configuration files of the name struts-plugin.xml, skipping
21 nov. 2010 23:34:35 com.opensymphony.xwork2.util.logging.jdk.JdkLogger info
INFO: Parsing configuration file [struts-plugin.xml]
21 nov. 2010 23:34:35 com.opensymphony.xwork2.util.logging.jdk.JdkLogger info
INFO: Parsing configuration file [struts.xml]
21 nov. 2010 23:34:35 org.apache.catalina.startup.HostConfig deployDirectory
21 nov. 2010 23:35:18 com.opensymphony.xwork2.util.logging.jdk.JdkLogger warn
ATTENTION: Could not find action or result
There is no Action mapped for action name HelloWorld. - [unknown location] |
Est-ce que quelqu'un peut regarder ça et me dire où je fais une connerie car je tourne en rond dans les docs.
D'ailleurs, si quelqu'un peut aussi m'expliquer la notion de namespaces pour les packages struts je ne suis pas contre car je ne vois pas trop les nuances et savoir de quel point partir. (Dans le cas en zip, j'ai retiré le namespace mais ça ne marchait pas nom plus sans).
Merci à tous les contributeurs.
Problème de mapping entre mon formulaire et mon entité
Bonjour à tous,
Après avoir suivi le tuto de struts 2 sur le site d'apache, j'ai voulu y rajouter la partie persistence des données.
J'ai donc choisi d'utilisé hibernate.
Cependant,lorsque j'essaie de persister mon entite personne, j'ai l'erreur
Code:
1 2
| Hibernate: select nextval ('hibernate_sequence')
Unknown integral data type for ids : java.lang |
et quand je fait un debug, je vois que, l'objet personne que j'essaie de persister est instancié dans l'odre "dateNaissance", "id", ",nom","prenom" alors que dans mon formulaire j'ai "nom", prenom", "dateNaissance".
Je dois faire quelque chose qui n'est pas correcte mais je ne sais pas c'est quoi.
Si quelqu'un peut bien m'aider.
Voici ma configuration:
naissance.jsp
Code:
1 2 3 4 5 6 7 8 9
|
<body>
<s:form action="validerDeclaration" >
<sj:textfield key="personne.nom" />
<s:textfield key="personne.prenom" />
<sj:datepicker key="personne.dateNaissance" />
<s:submit value="Valider"/>
</s:form>
</body> |
ma classe action
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| public class DeclarerNaissanceAction extends ActionSupport{
/**
*
*/
PersonneEntite personne;
PersonneDAOImpl personneDAOImpl=new PersonneDAOImpl();
private static final long serialVersionUID = 1597190265499702776L;
public String validerDeclaration(){
personneDAOImpl.savePersonne(personne);
return ActionSupport.SUCCESS;
}
public void validate(){
if(StringUtils.isEmpty(getPersonne().getNom())){
addFieldError(this.getPersonne().getNom(), "Le champs nom ne doit pas être vide");
}
}
public PersonneEntite getPersonne() {
return personne;
}
public void setPersonne(PersonneEntite personne) {
this.personne = personne;
}
} |
La classe PersonneEntite
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| public class PersonneEntite implements Serializable {
/**
*
*/
private static final long serialVersionUID = -5252913761461205990L;
@Id
@Column
@GeneratedValue
private String id;
@Column
private String nom;
@Column
private String prenom;
@Column
@Temporal(TemporalType.DATE)
private Date dateNaissance;
public String getNom() {
return nom;
}
public void setNom(String nom) {
this.nom = nom;
}
public PersonneEntite(){
}
public String getPrenom() {
return prenom;
}
public void setPrenom(String prenom) {
this.prenom = prenom;
}
public PersonneEntite( String nomP, String prenomP, Date dateNais){
nom=nomP;
prenom=prenomP;
dateNaissance =dateNais;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public Date getDateNaissance() {
return dateNaissance;
}
public void setDateNaissance(Date dateNaissance) {
this.dateNaissance = dateNaissance;
}
} |