【发布时间】:2017-07-15 01:54:07
【问题描述】:
我正在尝试读取之前通过 Javascript 设置的 Java 会话属性的值。属性设置正确,因为 Chrome 显示 here。
但是我之后似乎无法在Controller中获取此属性值。
我觉得我错过了整个会话的工作原理。
因为当我调试代码时,它只是显示我的 MainController.java 存储在其中。
我的代码
main.js
function setSessionCounter(count){
listElementsCounter = count;
sessionStorage.setItem("listElementsCounter", listElementsCounter);
}
MainController.java
@RestController
@EnableWebMvc
@Scope("session")
public class MainController {
...
@RequestMapping(value = "/search", method = RequestMethod.POST)
public ModelAndView showSearchResults(@ModelAttribute("SpringWeb")SearchParameters sp, ModelMap model, HttpSession session) throws SQLException {
//Build SQL without the counter
int elementsCount = (Integer)(session.getAttribute("listElementsCounter"));
...
}
我也在Controller中这样尝试过:
@RequestMapping(value = "/search", method = RequestMethod.POST)
public ModelAndView showSearchResults(@ModelAttribute("SpringWeb")SearchParameters sp, ModelMap model, HttpServletRequest request) throws SQLException {
HttpSession session = request.getSession();
//Build SQL without the counter
int elementsCount = (Integer)(session.getAttribute("listElementsCounter"));
...
}
如果有人能指出我做错了什么,我将不胜感激(:
【问题讨论】:
-
您的浏览器中正在运行 .js?
-
@DaveH 是的。 .js 工作得很好,并设置了我想要的值。但它不在我的控制器中的
HttpSession中。 -
浏览器上的会话存储和服务器上的会话存储之间没有自动连接。如果你想从浏览器获取信息到服务器,你需要发送它,一般通过 http PUT 或 POST
标签: javascript java spring session