-1

我试图将值存储在会话中,但它向我显示“字符串未正确关闭”错误。

我正在使用此代码来存储值:

<% session.setAttribute("emailvalue",request.getParameter("<%=request.getQueryString() %>"));
               String str=(String)session.getAttribute("emailvalue"); %>

它是正确的系统税吗?

4

2 回答 2

3

代替

<% session.setAttribute("emailvalue",request.getParameter("<%=request.getQueryString() %>"));String str=(String)session.getAttribute("emailvalue"); %>

将从 request.getQueryString() 获得的值存储在另一个变量中。您的代码在另一个 jsp java 标记 <%...%> 中有一个 jsp systemout 标记 <%=...%>,jsp 编译器不支持该标记。

而是使代码更简单,使其像下面这样工作

<% String queryString = request.getQueryString(); session.setAttribute("emailvalue",queryString ); String str=(String)session.getAttribute("emailvalue");%>
于 2012-11-26T19:19:41.853 回答
2

您已经在 scriptlet 中,因此无需<%=再次使用即可获得 Java 字符串:

<% session.setAttribute("emailvalue", request.getQueryString());
   String str = (String) session.getAttribute("emailvalue"); %>

打电话request.getParameter(request.getQueryString())也没有任何意义。

最后,您不应该使用 scriptlet。使用 JSP EL 和 JSTL:

<c:set var="emailValue" value="${pageContext.request.queryString}" scope="session"/>

或者更好的是,在控制器中执行此操作(即,发送到 JSP 的首选 MVC 框架的 servlet 或操作),因为它似乎不是视图应该执行的操作。

于 2012-11-26T19:22:08.930 回答