public org.apache.struts.action.ActionForward | execute(org.apache.struts.action.ActionMapping mapping, org.apache.struts.action.ActionForm form, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)Process the specified HTTP request, and create the corresponding HTTP
response (or forward to another web component that will create it).
Return an ActionForward instance describing where and how
control should be forwarded, or null if the response has
already been completed.
// --------------------------------------------------------- Public Methods
// Extract attributes we will need
Locale locale = getLocale(request);
MessageResources messages = getResources(request);
HttpSession session = request.getSession();
String action = request.getParameter("action");
if (action == null)
action = "Create";
if (log.isDebugEnabled()) {
log.debug("EditRegistrationAction: Processing " + action +
" action");
}
// Is there a currently logged on user?
User user = null;
if (!"Create".equals(action)) {
user = (User) session.getAttribute(Constants.USER_KEY);
if (user == null) {
if (log.isDebugEnabled()) {
log.debug(" User is not logged on in session "
+ session.getId());
}
return (mapping.findForward("logon"));
}
}
// Populate the user registration form
if (form == null) {
if (log.isTraceEnabled()) {
log.trace(" Creating new RegistrationForm bean under key "
+ mapping.getAttribute());
}
form = new RegistrationForm();
if ("request".equals(mapping.getScope()))
request.setAttribute(mapping.getAttribute(), form);
else
session.setAttribute(mapping.getAttribute(), form);
}
RegistrationForm regform = (RegistrationForm) form;
if (user != null) {
if (log.isTraceEnabled()) {
log.trace(" Populating form from " + user);
}
try {
PropertyUtils.copyProperties(regform, user);
regform.setAction(action);
regform.setPassword(null);
regform.setPassword2(null);
} catch (InvocationTargetException e) {
Throwable t = e.getTargetException();
if (t == null)
t = e;
log.error("RegistrationForm.populate", t);
throw new ServletException("RegistrationForm.populate", t);
} catch (Throwable t) {
log.error("RegistrationForm.populate", t);
throw new ServletException("RegistrationForm.populate", t);
}
}
// Set a transactional control token to prevent double posting
if (log.isTraceEnabled()) {
log.trace(" Setting transactional control token");
}
saveToken(request);
// Forward control to the edit user registration page
if (log.isTraceEnabled()) {
log.trace(" Forwarding to 'success' page");
}
return (mapping.findForward("success"));
|