如何将条件包含在组合的JSP和JavaScript函数中?

时间:2014-11-24 16:53:01

标签: javascript jsp conditional-statements

现在我有以下两个JavaScript函数:

function clearBillingCache(){
    window.location = "billingSearchClear.html"
}

function clearBillingCache_1(){
<%
    request.getSession().setAttribute("stickyCarrier", null);
    request.getSession().setAttribute("stickyAgency", null);
%>
}

如何组合函数,所以只有在request.getSession()。getAttribute(“stickyCarrier”)时!= null 执行以下操作:

<%
  request.getSession().setAttribute("stickyCarrier", null);
  request.getSession().setAttribute("stickyAgency", null);
%>
window.location = "billingSearchClear.html"

否则什么都不做。

编辑:

谢谢Bhaskara!

但实际上它比我展示的更多,它可能会进入一个无限循环,因为有一个重定向:

@RequestMapping(value = "/billingSearchClear.html", method = RequestMethod.GET)
public String clearCache(HttpServletRequest request) {
    String returnVal = "redirect:/billingSearch.html";

    request.getSession().setAttribute("stickyCarrier", null);
    request.getSession().setAttribute("stickyAgency", null);

    return returnVal;
}

我在clearBillingCache()

中呼叫<body onload=...>

1 个答案:

答案 0 :(得分:1)

请注意代码:

   function clearBillingCache_1(){
<%
    request.getSession().setAttribute("stickyCarrier", null);
    request.getSession().setAttribute("stickyAgency", null);
%>

}

将呈现为

function clearBillingCache_1(){

    }

您可以通过执行&#34;查看来源&#34;来检查这一点。在您的浏览器中。这意味着无论条件如何,无论如何都将设置scriptlet中定义的会话属性。我个人建议你不要使用Scriptlets。您可以使用JSTL执行此操作。这个想法是用于条件检查和设置属性和Javascript代码只是为了重定向。 JSTL:

<c:if test="${stickyCarrier != null}">
            <c:set var="stickyCarrier" value="null" scope="session"  />
            <c:set var="stickyAgency" value="null" scope="session"  />

        </c:if>

然后你的javascript:

function clearBillingCache(){
    window.location = "billingSearchClear.html"
}

编辑:

好的弗兰克。因此需要进行一些更改。您正从控制器/ servlet重定向。请按照以下步骤操作:

  • 将您的控制器代码更改为:

    @RequestMapping(value = "/search.html", method = RequestMethod.GET)
    public String clearCache(HttpServletRequest request) {
        String returnVal = "redirect:/billingSearch.html";
    if(request.getSession().getAttribute("stickyCarrier") != null)
    {
        request.getSession().setAttribute("stickyCarrier", null);
        request.getSession().setAttribute("stickyAgency", null);    
    }
    return returnVal;
    
  • 删除javascript函数:clearBillingCache_1()clearBillingCache()

  • 删除html
  • 上的body onload调用