I don't see anything that puts a user info into session (or request, I
forgot where it was), so it makes sense the JSP would fail.

[OT] In the future, consider removing useless, empty comments so people
trying to help have less work to do :)

Dave

On Wed, Jun 13, 2012 at 11:43 AM, Anjib Mulepati <anji...@hotmail.com>wrote:

> 1. Base Class
> public abstract class BaseAction extends org.apache.struts.action.**Action
> {
>
>    private static Log log = LogFactory.getLog("BaseAction"**);
>
>    /**
>     *
>     * @param mapping
>     * @param form
>     * @param request
>     * @param response
>     * @return
>     * @throws IOException
>     * @throws ServletException
>     * @throws BusinessDelegateException
>     */
>    @Override
>    public ActionForward execute(ActionMapping mapping, ActionForm form,
>            HttpServletRequest request, HttpServletResponse response)
>            throws IOException, ServletException, BusinessDelegateException
> {
>
>        if (!this.userIsLoggedIn(request)**) {
>            ActionErrors errors = new ActionErrors();
>            errors.add("error", new ActionMessage("error.**
> userNotLoggedIn"));
>            this.saveErrors(request, errors);
>            String url = request.getServletPath() + "?" +
> request.getQueryString();
>            request.getSession().**setAttribute("forwardPath", url);
>            return mapping.findForward("**sessionEnded");
>        }
>        return executeAction(mapping, form, request, response);
>    }
>
>    /**
>     *
>     * @param mapping
>     * @param form
>     * @param request
>     * @param response
>     * @return
>     * @throws IOException
>     * @throws ServletException
>     */
>    protected abstract ActionForward executeAction(ActionMapping mapping,
>            ActionForm form, HttpServletRequest request,
>            HttpServletResponse response)
>            throws IOException, ServletException;
>
>    private boolean userIsLoggedIn(**HttpServletRequest request) {
>        UserInfo userInfo = (UserInfo) request.getSession().**
> getAttribute("userInfo");
>        String userName = null;
>        try{
>            userName = userInfo.getUserName();
>        } catch (NullPointerException ex) {
>            log.error("User hasn't logged in yet.");
>            return false;
>        }
>
>        if ( userName == null) {
>            return false;
>        }
>        return true;
>    }
> }
>
> 2. Action class
> public class ChangePasswordAction extends BaseAction {
>
>    private static Log log = LogFactory.getLog("**ChangePasswordAction");
>
>    private static final String SUCCESS = "success";
>
>    private static final String FAILURE = "failure";
>
>    @Override
>    public ActionForward executeAction(ActionMapping mapping, ActionForm
> form,
>            HttpServletRequest request, HttpServletResponse response)
>            throws IOException, ServletException {
>
>        ActionErrors errors = new ActionErrors();
>        ActionMessages messages = new ActionMessages();
>
>        ChangePasswordForm changePwdForm = (ChangePasswordForm) form;
>        String userName = changePwdForm.getUserName();
>        String oldPassword = changePwdForm.getOldPwd().**trim();
>        String newPassword = changePwdForm.getPassword().**trim();
>        UserDelegate userDelegate = new UserDelegate(userName, null);
>        boolean isPasswordChanged = userDelegate.changePassword(**userName,
> oldPassword, newPassword);
>
>        if (isPasswordChanged) {
>            messages.add("password", new ActionMessage("msg.**
> changePasswordSuccess"));
>            this.saveMessages(request, messages);
>            log.info("Password changed successfully.");
>            return mapping.findForward(SUCCESS);
>        } else {
>            errors.add("errors", new ActionMessage("msg.**
> changePasswordError"));
>            saveErrors(request, errors);
>            log.error("Password can't be changed");
>            return mapping.findForward(FAILURE);
>        }
>   }
> }
>
> 3. Validation class
> public class ChangePasswordForm extends ValidatorForm {
>
>    private String userName;
>    private String oldPwd;
>    private String password;
>    private String confirmPwd;
>
>    /**
>     *
>     * @return
>     */
>    public String getPassword() {
>        return password;
>    }
>
>    /**
>     *
>     * @param password
>     */
>    public void setPassword(String password) {
>        this.password = password;
>    }
>
>    /**
>     *
>     * @return
>     */
>    public String getOldPwd() {
>        return oldPwd;
>    }
>
>    /**
>     *
>     * @param oldPwd
>     */
>    public void setOldPwd(String oldPwd) {
>        this.oldPwd = oldPwd;
>    }
>
>    /**
>     *
>     * @return
>     */
>    public String getConfirmPwd() {
>        return confirmPwd;
>    }
>
>    /**
>     *
>     * @param confirmPwd
>     */
>    public void setConfirmPwd(String confirmPwd) {
>        this.confirmPwd = confirmPwd;
>    }
>
>    /**
>     *
>     * @return
>     */
>    public String getUserName() {
>        return userName;
>    }
>
>    /**
>     *
>     * @param userName
>     */
>    public void setUserName(String userName) {
>        this.userName = userName;
>    }
>
>    /**
>     *
>     */
>    public ChangePasswordForm() {
>        super();
>
>    }
>
>    /**
>     * This is the action called from the Struts framework.
>     * @param mapping The ActionMapping used to select this instance.
>     * @param request The HTTP Request we are processing.
>     * @return set of errors.
>     */
>    @Override
>    public ActionErrors validate(ActionMapping mapping, HttpServletRequest
> request) {
>        ActionErrors errors = new ActionErrors();
>        if(userName.isEmpty()){
>            errors.add("error", new ActionMessage("error.userName"**));
>        }
>        if(oldPwd.isEmpty()){
>            errors.add("error", new ActionMessage("error.**oldPassword"));
>        }
>        if(password.isEmpty()){
>            errors.add("error", new ActionMessage("error.**newPassword"));
>        }
>        if(!confirmPwd.equals(**password)){
>            errors.add("error", new ActionMessage("error.**
> confirmPassword"));
>        }
>        if(userName.equalsIgnoreCase(**password)){
>            errors.add("error", new ActionMessage("error.**
> sameAsUsername"));
>        }
>        if(oldPwd.equalsIgnoreCase(**password)){
>            errors.add("error", new ActionMessage("error.**samePassword"));
>        }
>        return errors;
>    }
>
>    /**
>     *
>     * @param mapping
>     * @param request
>     */
>    @Override
>    public void reset(ActionMapping mapping, HttpServletRequest request) {
>        userName = "";
>        oldPwd = "";
>        password = "";
>        confirmPwd = "";
>    }
> }
>
> On 6/13/2012 11:10 AM, Jason Zheng wrote:
>
>> Anjib, would you like to show us the codes in the Action
>> ChangePasswordAction?
>>
>> On Wed, Jun 13, 2012 at 10:58 PM, Dave Newton<davelnew...@gmail.com>
>>  wrote:
>>
>>  Then it's likely you're doing something wrong if you're forwarding to a
>>> page before creating the info that page needs.
>>>
>>> Dave
>>>
>>> On Wed, Jun 13, 2012 at 10:53 AM, Anjib Mulepati<anji...@hotmail.com
>>>
>>>> wrote:
>>>> Even though I put validation in ActionForm validate() method failure
>>>> will
>>>> take to changePasswordPage. I do have validation to check form field.
>>>>
>>>>
>>>> On 6/13/2012 9:17 AM, Dave Newton wrote:
>>>>
>>>>  Maybe some sort of validation would be helpful.
>>>>>
>>>>> Dave
>>>>>
>>>>> On Wed, Jun 13, 2012 at 9:03 AM, Anjib Mulepati<anji...@hotmail.com>
>>>>>  wrote:
>>>>>
>>>>>  Hi All,
>>>>>
>>>>>> I have question regarding handling form submission by direct URL in
>>>>>> Struts
>>>>>> 1.3.8
>>>>>>
>>>>>> I have a page to change password which user can access after they
>>>>>>
>>>>> login.
>>>
>>>> URL for that page is http://localhost:8080/MyApp/****
>>>>>> **changepassword.do<http://localhost:8080/MyApp/****changepassword.do>
>>>>>>
>>>>> <http://localhost:8080/MyApp/****changepassword.do<http://localhost:8080/MyApp/**changepassword.do>
>>> >
>>>
>>>> <http://**localhost:8080/**MyApp/**changepassword.do<
>>>>>>
>>>>> http://localhost:8080/MyApp/**changepassword.do<http://localhost:8080/MyApp/changepassword.do>
>>> >
>>>
>>>>
>>>>>> I have action mapping as follow:
>>>>>> <action path="/changepassword" input="changePasswordPage"
>>>>>>
>>>>> scope="request"
>>>
>>>>  name="ChangePasswordForm" type="com.anjib.actions.**
>>>>>>
>>>>>> ChangePasswordAction">
>>>>>> <forward name="success" path="changePasswordPage" />
>>>>>> <forward name="failure" path="changePasswordPage"/>
>>>>>> </action>
>>>>>>
>>>>>> I have tile definition for changePasswordPage which have page like
>>>>>>
>>>>> header
>>>
>>>> which display welcome information after user login
>>>>>> <div id="welcome" class="right">
>>>>>> <bean:message key="label.welcome" />
>>>>>> <logic:notEmpty name="userInfo" property="firstName">
>>>>>>         ${userInfo.firstName}&nbsp;${******userInfo.lastName}
>>>>>>
>>>>>> </logic:notEmpty>
>>>>>> <logic:empty name="userInfo" property="firstName">
>>>>>>            ${userInfo.userName}
>>>>>> </logic:empty>
>>>>>> </div>
>>>>>>
>>>>>> Now everything works fine if we follow normal process: Login and do
>>>>>> actions. But if someone type URL http://localhost:8080/MyApp/**
>>>>>> changepassword.do<http://****localhost:8080/MyApp/****
>>>>>> changepassword.do<
>>>>>>
>>>>> http://localhost:8080/MyApp/**changepassword.do<http://localhost:8080/MyApp/changepassword.do>
>>> >>directly
>>>
>>>> then I don't get page and I have error in Tomcat log
>>>>>> Caused by: javax.servlet.jsp.******JspException: Cannot find bean:
>>>>>> "userInfo"
>>>>>>
>>>>>> in any scope
>>>>>>
>>>>>> Any help will be appreciated.
>>>>>>
>>>>>> Thanks,
>>>>>> Anjib
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> ------------------------------******--------------------------**--**
>>>>>> --**---------
>>>>>> To unsubscribe, e-mail: user-unsubscribe@struts.****apac**he.org<
>>>>>>
>>>>> http://apache.org>
>>>
>>>> <user-unsubscribe@**struts.**apache.org <http://struts.apache.org><
>>>>>>
>>>>> user-unsubscribe@struts.**apache.org<user-unsubscr...@struts.apache.org>
>>> >
>>>
>>>> For additional commands, e-mail: user-h...@struts.apache.org
>>>>>>
>>>>>>
>>>>>>
>>>>>>  ------------------------------****----------------------------**
>>>> --**---------
>>>> To unsubscribe, e-mail: 
>>>> user-unsubscribe@struts.**apac**he.org<http://apache.org>
>>>> <
>>>>
>>> user-unsubscribe@struts.**apache.org<user-unsubscr...@struts.apache.org>
>>> >
>>>
>>>> For additional commands, e-mail: user-h...@struts.apache.org
>>>>
>>>>
>>>>
>>
>>
>
> ------------------------------**------------------------------**---------
> To unsubscribe, e-mail: 
> user-unsubscribe@struts.**apache.org<user-unsubscr...@struts.apache.org>
> For additional commands, e-mail: user-h...@struts.apache.org
>
>

Reply via email to