Spring MVC でサーブレット セッションにアクセスするには、さまざまな方法があります。しかし、これがあなたの問題に最も適したものだと思います。必要な情報を保持するセッション スコープ Bean を作成できます。
@Component("myObjectHolder")
@Scope(WebApplicationContext.SCOPE_SESSION)
public class MyObjectHolderImpl implements MyObjectHolder {
private long userId;
private String username;
private Theme theme;
// Getters & Setter
}
次に、他の Bean からアクセスできます。
@Controller
public class MyController {
@Autowired private MyObjectHolder myObjectHolder;
@RequestMapping
public ModelAndView switchTheme(String themeId) {
...
Theme newTheme = themeService.get(themeId);
myObjectHolder.setTheme(newTheme);
...
}
}
ビューから直接アクセスすることもできますが、構成する必要があります。
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
...
<property name="exposedContextBeanNames" value="myObjectHolder" />
</bean>
そしてあなたのJSPで:
Hi ${myObjectHolder.username}, you switched
application theme to ${myObjectHolder.theme.name}