现在我有以下两个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=...>
答案 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()