Spring控制器保持旧值

时间:2013-12-09 14:02:28

标签: java spring controller code-injection

我正在使用Spring注入开发一个系统。在某个时刻,屏幕上会出现一个警告,该警告是使用WarningHelper类的属性显示的,该类是一个Spring Controller。以下是摘要代码:

@Controller
@Scope(WebApplicationContext.SCOPE_SESSION)
public class WarningHelper implements Serializable {
     //Bunch of attributes
     private String warningText;

     //Bunch of other methods

     private String configureWarning(Integer caller, Outcome outcome, WarningReturn warningReturn, GlobalWebUser user) {
            //business logic

    if (hasWarning()) {
        setWarningText(warningReturn.getWarningText());
    }

    return redirect;
 }
}

那部分完美无缺。稍后,xhtml页面使用另一个注入第一个控制器的控制器显示此警告。以下是第二个控制器的编辑代码:

@Controller
@Scope(WebApplicationContext.SCOPE_APPLICATION)
public class CustomUrlController {

    //Bunch of other attributes
@Inject
private WarningHelper warningHelper;    

    //Bunch of methods
    public String getAllMessages() {
        String completeMessage = "";
        //business logic creating the message
        completeMessage += warningHelper.getWarningText();

        return complete Message
    }   
}

第一次这一切都很好。问题是,如果我尝试输入另一个具有不同消息的配置文件,则仍会显示第一个配置文件。请注意,此更改过程不涉及其他登录,因此会话仍然相同。我已经尝试了范围,但无济于事。

1 个答案:

答案 0 :(得分:1)

WarningHelper CustomUrlController 类中将@Scope(WebApplicationContext.SCOPE_SESSION)更改为@Scope(WebApplicationContext.SCOPE_REQUEST)。这将为每个请求实例化CustomUrlControllerwarningHelper