【问题标题】:How i can delete a java session attribute value from a javascript?我如何从 javascript 中删除 java 会话属性值?
【发布时间】:2017-06-03 14:30:03
【问题描述】:

我有一个变量,它从 java 发送到 jsp 页面:

String message = "Some message";
request.getSession().setAttribute("message", message);

这个变量,我使用以下javaScript代码在客户端显示来自服务器的消息:

var msg = "${message}";
if (msg != "") {
  $("#modalAdd").show();
}

我需要通过js删除这个变量或者它的值,因为输出消息,我检查它是否有任何值,这个时候它总是显示的消息,因为显示消息后,我不能删除变量的值。

【问题讨论】:

  • $(yourElement).attr('message','');
  • JavaScript 无法从服务器更改变量。这将需要 Ajax 调用/表单提交您需要向服务器提交一些内容并让 Java 代码将其删除。

标签: javascript java jquery servlets


【解决方案1】:

我通过使用 jstl 代码删除属性解决了这个问题。 显示消息后,我使用 javascript 插入 div c:remove 标记,它解决了我的问题。

var msg = "${message}";
    if(msg != ""){$("#modalAdd").show();
    document.getElementById('modal-message').innerHTML ='<c:remove var="message" scope="session" /> ';
    }

【讨论】:

    【解决方案2】:

    与之前的回复相同,对于 .jsp,在我的布局/模板页面中:

    <c:if test="${sessionerror!=null}">
        <div class="alert-${sessionerror.level}">
            <spring:message code="${sessionerror.text}"/>
        </div>
    </c:if>
    <%
    // Removing after display
    session.removeAttribute("sessionerror");
    %>
    

    编辑: 如果您想通过重定向传输您的消息,您可以将您的消息从会话范围降级为拦截器中的请求。这是自制的“重定向属性”。

    带有 Spring HandlerInterceptor 的示例:

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        if(request.getSession().getAttribute("alert") != null) {
            request.setAttribute("alert", request.getSession().getAttribute("alert"));
            request.getSession().removeAttribute("alert");
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-20
      • 1970-01-01
      • 2013-08-15
      • 2014-06-16
      • 1970-01-01
      • 2018-10-05
      • 1970-01-01
      • 2022-07-06
      相关资源
      最近更新 更多