转自:http://hi.baidu.com/9126nono/blog/item/d473922bbf120c2ad42af1ba.html

scope=prototype

2008年11月17日 星期一 13:19
   在使用freemarker做struts2校验时,当验证无法通过时,会打印错误信息,而且还一直打印之前的错误信息。因为在配置spring的bean是忘了写scope="prototype",所以每次添加时都显示最后一次访问过的记录找了很长时间,struts2的验证一旦有错,页面就过不了,而且一直把原来的错误信息打印出来。
     login.ftl:
       <#if !(fieldErrors.isEmpty())><#t/>
            <#list fieldErrors.keySet() as fieldName><#t/>
            <ul style="color: red;">
                <#list fieldErrors[fieldName] as error><#t/>
                    <li>${error}</li>
                </#list><#t/>
            </ul>
            </#list><#t/>
        </#if><#t/>
    原来是spring bean出了问题。 scope="prototype" 会在该类型的对象被请求时创建一个新的action对象。如果没有配置scope=prototype则添加的时候不会新建一个action,他任然会保留上次访问的过记录的信息。
   <bean id="assetAction" class="com.abc.action.AssetAction" scope="prototype">