I can't make heads or tails of that.

How about you get a "sanity check" version going first then revisit
all that? Sounds like you changed several fundamental behaviors all at
once without a safety net. Can you revert?

Dave

On Thu, Feb 3, 2011 at 7:31 PM, Rubens Gomes <rubens.go...@appia.com> wrote:
> I am still having issues with the action setters not being called.  I have 
> already spent several hours on this problem.  Here is additional information:
>
> Struts 2 + Struts 2 struts2-convention-plugin version: 2.2.1.1
>
> Absolutely *none* of my actions setters are called.  This problem is 
> happening across board with all my actions.  I have re-factored all my 
> actions recently to make use of Struts 2 annotations. I have also done some 
> refactoring on the JSPs and Spring security filters.  All actions were 
> working fine before.  And I *did* see the parameters passed from the browser 
> to the struts 2 ParameterInterceptor (see previous logs).
>
> Below is my struts.xml and an action class with the setters that are *not* 
> being called.
>
> Am I doing something wrong on my configurations and java code?
>
> <?xml version="1.0" encoding="UTF-8" ?>
> <!--
>  * @(#)  $$Id: struts.xml 3763 2011-02-03 06:56:24Z rgomes $$
> -->
> <!DOCTYPE struts PUBLIC
>    "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
>    "http://struts.apache.org/dtds/struts-2.1.7.dtd";>
>
> <struts>
>  <constant name="struts.devMode" value="false" />
>
>  <constant name="struts.action.extension" value="do" />
>  <constant name="struts.convention.default.parent.package" 
> value="defaultPackage" />
>  <constant name="struts.convention.package.locators" value="action" />
>  <constant name="struts.custom.i18n.resources" value="struts/resources" />
>  <constant name="struts.date.format" value="dd/MM/yyyy hh:mm" />
>  <constant name="struts.freemarker.templatesCache" value="true" />
>  <constant name="struts.i18n.encoding" value="UTF-8"/>
>  <constant name="struts.serve.static" value="true" />
>  <constant name="struts.ui.theme" value="simple" />
>
>  <include file="struts-default.xml" />
>
>  <package name="ajaxPackage" extends="json-default">
>    <interceptors>
>      <interceptor name="secureInterceptor" 
> class="com.softlagos.web.struts2.interceptor.SecureInterceptor" />
>
>      <interceptor-stack name="ajaxStack">
>        <interceptor-ref name="params" />
>      </interceptor-stack>
>
>      <interceptor-stack name="secureAjaxStack">
>        <interceptor-ref name="ajaxStack" />
>        <interceptor-ref name="secureInterceptor" />
>      </interceptor-stack>
>    </interceptors>
>  </package>
>
>
>  <package name="defaultPackage" extends="struts-default">
>    <interceptors>
>      <interceptor name="fontSizeInterceptor" 
> class="com.softlagos.web.struts2.interceptor.FontSizeInterceptor" />
>      <interceptor name="valueStackInterceptor" 
> class="com.softlagos.web.struts2.interceptor.ValueStackInterceptor" />
>      <interceptor name="localeInterceptor" 
> class="com.softlagos.web.struts2.interceptor.LocaleInterceptor" />
>      <interceptor name="secureInterceptor" 
> class="com.softlagos.web.struts2.interceptor.SecureInterceptor" />
>
>      <interceptor-stack name="myDefaultStack">
>        <interceptor-ref name="fontSizeInterceptor" />
>        <interceptor-ref name="valueStackInterceptor" />
>        <interceptor-ref name="defaultStack">
>          <param name="exception.logEnabled">true</param>
>          <param name="exception.logLevel">ERROR</param>
>        </interceptor-ref>
>        <interceptor-ref name="localeInterceptor" />
>      </interceptor-stack>
>
>      <interceptor-stack name="secureStack">
>        <interceptor-ref name="myDefaultStack" />
>        <interceptor-ref name="secureInterceptor" />
>      </interceptor-stack>
>    </interceptors>
>
>    <default-interceptor-ref name="myDefaultStack" />
>
>    <default-action-ref name="default-action" />
>
>    <global-results>
>      <result name="exception">/WEB-INF/content/${browser}/error.jsp</result>
>    </global-results>
>
>    <global-exception-mappings>
>      <exception-mapping exception="java.lang.Exception" result="exception" />
>    </global-exception-mappings>
>
>    <action name="default-action" 
> class="com.softlagos.web.struts2.action.DefaultAction">
>      <result>/WEB-INF/content/${browser}/error.jsp</result>
>    </action>
>  </package>
>
>  <package name="home" extends="defaultPackage" namespace="/">
>    <action name="about">
>      <result>/WEB-INF/content/${browser}/about.jsp</result>
>    </action>
>    <action name="error">
>      <result>/WEB-INF/content/${browser}/error.jsp</result>
>    </action>
>    <action name="help">
>      <result>/WEB-INF/content/${browser}/help.jsp</result>
>    </action>
>    <action name="language-help">
>      <result>/WEB-INF/content/${browser}/language-help.jsp</result>
>    </action>
>    <action name="pending-email-help">
>      <result>/WEB-INF/content/${browser}/pending-email-help.jsp</result>
>    </action>
>    <action name="privacy">
>      <result>/WEB-INF/content/${browser}/privacy.jsp</result>
>    </action>
>    <action name="remember-help">
>      <result>/WEB-INF/content/${browser}/remember-help.jsp</result>
>    </action>
>    <action name="terms">
>      <result>/WEB-INF/content/${browser}/terms.jsp</result>
>    </action>
>    <action name="terms-service">
>      <result>/WEB-INF/content/${browser}/terms-service.jsp</result>
>    </action>
>  </package>
>
>  <package name="secure-tools" extends="defaultPackage" 
> namespace="/secure/tools">
>    <default-interceptor-ref name="secureStack" />
>    <action name="view-google-contacts-import">
>      
> <result>/WEB-INF/content/${browser}/tools/google-contacts-import.jsp</result>
>    </action>
>    <action name="view-export-tools">
>      <result>/WEB-INF/content/${browser}/tools/export.jsp</result>
>    </action>
>    <action name="view-tools">
>      <result>/WEB-INF/content/${browser}/tools/tools.jsp</result>
>    </action>
>  </package>
>
>  <package name="account" extends="defaultPackage" namespace="/account">
>    <action name="request-pwd-confirmation">
>      
> <result>/WEB-INF/content/${browser}/account/request-pwd-confirmation.jsp</result>
>    </action>
>    <action name="reset-pwd-confirmation">
>      
> <result>/WEB-INF/content/${browser}/account/reset-pwd-confirmation.jsp</result>
>    </action>
>  </package>
>
>  <package name="secure-account" extends="defaultPackage" 
> namespace="/secure/account">
>    <default-interceptor-ref name="secureStack" />
>    <action name="confirm-email">
>      <result>/WEB-INF/content/${browser}/account/confirm-email.jsp</result>
>    </action>
>    <action name="view-change-user-language">
>      
> <result>/WEB-INF/content/${browser}/account/change-user-language.jsp</result>
>    </action>
>  </package>
>
>  <package name="secure-ssl-account" extends="defaultPackage" 
> namespace="/secure/ssl/account">
>    <default-interceptor-ref name="secureStack" />
>    <action name="change-login">
>      <result>/WEB-INF/content/${browser}/account/change-login.jsp</result>
>    </action>
>    <action name="view-change-email">
>      <result>/WEB-INF/content/${browser}/account/change-email.jsp</result>
>    </action>
>    <action name="view-change-password">
>      <result>/WEB-INF/content/${browser}/account/change-password.jsp</result>
>    </action>
>  </package>
>
> </struts>
>
>
> package com.softlagos.web.struts2.action.account;
>
> import java.util.ArrayList;
> import java.util.List;
>
> import org.apache.commons.lang.StringUtils;
> import org.apache.commons.logging.Log;
> import org.apache.commons.logging.LogFactory;
> import org.apache.struts2.convention.annotation.Namespace;
> import org.apache.struts2.convention.annotation.Result;
> import org.apache.struts2.convention.annotation.Results;
> import 
> org.springframework.security.web.authentication.WebAuthenticationDetails;
>
> import com.softlagos.common.Message;
> import com.softlagos.common.Response;
> import com.softlagos.common.validator.PasswordValidator;
> import com.softlagos.domain.account.AccountResponse;
> import com.softlagos.domain.account.PrivilegeType;
> import com.softlagos.domain.account.RoleNameType;
> import com.softlagos.domain.account.UserAccount;
> import com.softlagos.domain.address.Email;
> import com.softlagos.web.cookie.CookieManager;
> import com.softlagos.web.cookie.CookieManagerFactory;
> import com.softlagos.web.struts2.action.common.BaseAction;
>
>
> /**
>  * Handles the registration form submit to register a user account on the
>  * system.
>  *
>  * @author Rubens Gomes
>  * @version $Id: RegisterAction.java 3657 2011-01-27 17:38:40Z rgomes $
>  */
> @Namespace("/ssl/account")
> @Results({
>    @Result(name="cancel", location="/", type="redirect"),
>    @Result(name="error", 
> location="/WEB-INF/content/${browser}/account/register.jsp", 
> type="dispatcher"),
>    @Result(name="input", 
> location="/WEB-INF/content/${browser}/account/register.jsp", 
> type="dispatcher"),
>    @Result(name="success", location="/secure/addressbook/address-book.do", 
> type="redirect")
> })
> public final class RegisterAction extends BaseAction
> {
>    private static final long serialVersionUID = 1;
>    private static final Log logger = 
> LogFactory.getLog(RegisterAction.class.getName());
>    static final Log newAccountLogger = LogFactory.getLog("NewAccountLogger");
>    private String email;
>    private String password;
>    private String confirmPassword;
>    private String termsAgreed;
>    private boolean cancel = false;
>
>    public RegisterAction()
>    {
>        super();
>    }
>
>    @Override
>    public void validate()
>    {
>        if (this.isCancel())
>        {
>            return;
>        }
>
>        if (StringUtils.isBlank(this.termsAgreed))
>        {
>            this.addFieldError("termsAgreed", 
> this.getText("error.account.termsNotAccepted"));
>        }
>
>        if (StringUtils.isEmpty(this.email))
>        {
>            this.addFieldError("email", 
> this.getText("error.account.emailRequired"));
>        }
>        else if (!Email.isEmailValid(email))
>        {
>            this.addFieldError("email", 
> this.getText("error.account.emailInvalid"));
>        }
>
>        // password
>        if (StringUtils.isBlank(this.password))
>        {
>            this.addFieldError("password", 
> this.getText("error.authentication.passwordRequired"));
>        }
>        else if (!UserAccount.isPasswordValid(this.password))
>        {
>            List<String> args = new ArrayList<String>();
>            args.add("" + PasswordValidator.MIN_PASSWORD_LENGTH);
>            args.add("" + PasswordValidator.MAX_PASSWORD_LENGTH);
>            this.addFieldError("password",
>                this.getText("error.authentication.passwordInvalid", 
> args.toArray(new String[0])));
>        }
>
>        // confirm password
>        if (StringUtils.isBlank(this.confirmPassword))
>        {
>            this.addFieldError("confirmPassword", 
> this.getText("error.authentication.passwordRequired"));
>        }
>        else if (!UserAccount.isPasswordValid(this.confirmPassword))
>        {
>            List<String> args = new ArrayList<String>();
>            args.add("" + PasswordValidator.MIN_PASSWORD_LENGTH);
>            args.add("" + PasswordValidator.MAX_PASSWORD_LENGTH);
>            this.addFieldError("confirmPassword",
>                this.getText("error.authentication.passwordInvalid", 
> args.toArray(new String[0])));
>        }
>        else if (!this.confirmPassword.equals(this.password))
>        {
>            this.addFieldError("confirmPassword", 
> this.getText("error.account.passwordsDifferent"));
>        }
>    }
>
>    @Override
>    public String execute()
>    {
>        if (this.isCancel())
>        {
>            return "cancel";
>        }
>
>        AccountResponse response = 
> BaseAction.accountService.createUserAccount(this.email, this.password,
>                this.getClientIpAddr(), RoleNameType.ROLE_USER, 
> PrivilegeType.READ_WRITE, this.email,
>                this.getLocale());
>
>        Message error = response.getErrorMessage();
>        if (error != null)
>        {
>            String errorMsg = this.getErrorTextMessage(error);
>            if (logger.isInfoEnabled())
>            {
>                logger.info("error occurred creating account: " + errorMsg);
>            }
>
>            this.addActionError(errorMsg);
>            return ERROR;
>        }
>
>        UserAccount account = response.getUserAccount();
>        Response notificationResponse = 
> BaseAction.notificationService.newAccountConfirmation(account.getUserProfile().getPrimaryEmail(),
>                this.getConfirmationUrl("/account/confirm-new-account.do"));
>        error = notificationResponse.getErrorMessage();
>        if (error != null)
>        {
>            String errorMsg = this.getErrorTextMessage(error);
>            if (logger.isInfoEnabled())
>            {
>                logger.info("error occurred submitting new account 
> notification: " + errorMsg);
>            }
>
>            this.addActionError(errorMsg);
>            return ERROR;
>        }
>
>        WebAuthenticationDetails details = new 
> WebAuthenticationDetails(this.getRequest());
>        Response securityResponse = 
> BaseAction.securityService.establishSecurityAuthentication(details,
>                account.getId());
>        error = securityResponse.getErrorMessage();
>        if (error != null)
>        {
>            String errorMsg = this.getErrorTextMessage(error);
>            if (logger.isInfoEnabled())
>            {
>                logger.info("error occurred creating account: " + errorMsg);
>            }
>
>            this.addActionError(errorMsg);
>            return ERROR;
>        }
>
>        // at this point an authentication has been placed on the security 
> context,
>        // and we can safely redirect the user to the contacts list page.
>
>        // store prefered language on the cookie to remember user's prefered 
> language.
>        CookieManager cookieManager = 
> CookieManagerFactory.getInstance(this.getRequest(), this.getResponse());
>        cookieManager.setLanguageCookie(this.getLocale().getLanguage());
>
>        // store the account Id on the session
>        this.getUserSession().setAccountId(account.getId());
>
>        if (newAccountLogger.isInfoEnabled())
>        {
>            
> newAccountLogger.info("-------------------------------------------------------------------");
>            newAccountLogger.info("Account created [" + account.getUsername() 
> + "]");
>            newAccountLogger.info("Client IP address [" + 
> account.getRegisteredClientIpAddress() + "]");
>        }
>
>        return SUCCESS;
>    }
>
>    /**
>     * @param password the password to set
>     */
>    public void setPassword(String password)
>    {
>        this.password = password;
>    }
>
>    /**
>     * @return the password
>     */
>    public String getPassword()
>    {
>        return this.password;
>    }
>
>    /**
>     * @return the confirmPassword
>     */
>    public String getConfirmPassword()
>    {
>        return confirmPassword;
>    }
>
>    /**
>     * @param confirmPassword the confirmPassword to set
>     */
>    public void setConfirmPassword(String confirmPassword)
>    {
>        this.confirmPassword = confirmPassword;
>    }
>
>    /**
>     * @return the user primary email
>     */
>    public String getEmail()
>    {
>        return this.email;
>    }
>
>    /**
>     * @param primaryEmail the user primary email to set
>     */
>    public void setEmail(String primaryEmail)
>    {
>        this.email = (primaryEmail != null) ? primaryEmail.trim() : null;
>    }
>
>    /**
>     * @return the terms
>     */
>    public final String getTermsAgreed()
>    {
>        return this.termsAgreed;
>    }
>
>    /**
>     * @param terms the terms to set
>     */
>    public final void setTermsAgreed(String terms)
>    {
>        this.termsAgreed = terms;
>    }
>
>    /**
>     * @return the cancel
>     */
>    public boolean isCancel()
>    {
>        return cancel;
>    }
>
>    /**
>     * notice that if the corresponding button is pressed the cancel should be 
> set to true.
>     *
>     * @param cancel the cancel to set
>     */
>    public void setCancel(boolean dummy)
>    {
>        this.cancel = true;
>    }
> }
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
> For additional commands, e-mail: user-h...@struts.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org

Reply via email to