0

我正在开发 Spring 3 + Struts2 应用程序,我在 Spring 中配置我的动作如下:

  <bean id="patientSearchAPIClass" class="com.axiohelix.nozoki.web.action.api.PatientSearch">     
       <property name="searchService" ref="searchService"/>        
    </bean> 

但是在我的 Action 类中,我保留字段来存储请求参数,

public class PatientSearch extends ActionSupport {


        public String getPharumoId() {      
        return pharumoId;
        }

        public void setPharumoId(String pharumoId) {
        this.pharumoId = pharumoId;
         }

        public String getName() {
        return name;
        }
        public void setName(String name) {
        this.name = name;
        }

        private String name;
        private String pharumoId;
        ..


        public String execute(){        
        searchResults=searchService.searchPatients(pharumoId,                                                  name,
                                                   birthday,
                                                   pharmacyId,
                                                   clinic,
                                                   doctorName,
                                                   drugName,
                                                   supplyDate,                                                 
                                                   offset, 
                                                   pageSize);       

        return Action.SUCCESS;
    }

此操作返回 JSON 输出,我使用以下 URL 访问它:

http://localhost/app/searchAPI.action?name=UserName

那么下次如果我使用 URL 访问:

http://localhost/app/searchAPI.action

“名称”字段设置为之前的“用户名”值。

1.如何根据请求重置这些值?

2.我认为动作类是根据请求实例化的,不是吗?

4

1 回答 1

2

问题在于 Spring 创建 Action 类的方式。默认情况下,Spring 创建单例实例,对于 Struts2,Action 类也可以作为模型工作,因为这个框架创建了一个新的 Action 实例并将其放入值堆栈中。

在使用 Spring 创建动作类时,请确保将范围定义为原型

<bean id="patientSearchAPIClass" 
 class="com.axiohelix.nozoki.web.action.api.PatientSearch" scope=prototype>

因此,Spring 应该为每个请求创建新的 Action 实例。

于 2012-08-17T07:14:33.390 回答