Salut Tout Le Monde.
Je suis un débutant t en Struts et encore plus en Spring.

Quand je demande le lient /Users.add.action , je obtiens la view /jsp/Users/error.jsp malgre que il n'y a aucun methode de l'action usersAction qui returné INPUT

Struts.xml

<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false"/>
<constant name="struts.devMode" value="true" />
<constant name="struts.custom.i18n.resources" value="package" />
<constant name="struts.objectFactory" value="org.apache.struts2.spring.StrutsSpringObjectFactory" />
<include file="struts-default.xml"/>

<package name="default" namespace="/" extends="struts-default">
<action name="Users.*" class="usersAction">
<result name="success"> /jsp/Users/save.jsp</result>
<result name="input"> /jsp/Users/error.jsp</result>
<result name="error"> /jsp/Users/save.jsp</result>
</action>
</package>
</struts>


applicationContext.xml:

<bean id="usersAction" class="com.vision.crm.mvc.struts2.actions.UsersAction">
<property name="user">
<bean class="com.vision.crm.mapping.hibernate.bean.User" ></bean>
</property>
<property name="userDAO" ref="UserDAO"/>
</bean>


UsersAction.java :
public class UsersAction extends ActionSupport /*implements ModelDriven*/ {
static final long serialVersionUID = -726287915382955298L;
private String message;
private User user;
private UserManager userDAO;

public static final String MESSAGE = "user.default.message";
public static final String USER_SAVED = "user.save.message";
public static final String USER_UPDATE = "user.update.message";
public static final String USER_DELETED = "user.deleted.message";
public static final String USER_FOUND = "user.found.message";

public String getMessage() {return message;}
public void setMessage(String message) {this.message = message;}
public User getUser() {return user;}
public void setUser(User user) {System.out.println("setUser");this.user = user;}
public UserManager getUserDAO() {return userDAO;}
public void setUserDAO(UserManager useDAO) {System.out.println("setUserDAO");this.userDAO = useDAO;}

public String execute() throws Exception {
System.out.println("Actin Methode Execute");
return "error";
}
public String reset() throws Exception {
System.out.println("Actin Methode reset");
super.clearErrorsAndMessages();
this.user = new User();
setMessage( getText(MESSAGE) );
return "error";
}
/////////////////////////////////////////////////////////////////////////////////////////
public String add() throws Exception {
System.out.println("Actin Methode Add");
return "error";
}
public String save() throws Exception {
System.out.println("Actin Methode Save");
Session s = HibernateSessionFactory.getSessionFactory().getCurrentSession();
Transaction tx = s.beginTransaction();
userDAO.save(user);
System.out.println("getIduser "+user.getIduser()+" getNom "+user.getNom());
s.save(user);
tx.commit();
setMessage(getText(USER_SAVED));
return "error";
}
//////////////////////////////////////////////////////////////////////////////////////////
public String find() throws Exception {
System.out.println("Actin Methode Find");
List<User> list = userDAO.findByExample(user);
if( list.size() > 0 )
setUser( (User) list.get(0) );
setMessage(getText(USER_FOUND, "0" , new String[] { String.valueOf(list.size() ) }));
return "error";
}
public String delete() throws Exception {
System.out.println("Actin Methode Delete");
userDAO.delete(this.user);
setMessage( getText(USER_DELETED) );
return "error";
}
}