我想从java脚本获取页面url并检查url值以烧掉脚本(在同一个jsp页面内)。
<script>
var currentUrl=window.location.href;
</script>
<c:when test="${fn:containsIgnoreCase(currentUrl, 'homepage') or fn:containsIgnoreCase(currentUrl, 'accountpage')}">
// need to do some operation for this purticular page only.
</c:when>
请给我一些建议。 提前致谢, MUTHU
答案 0 :(得分:2)
如果您可以通过请求访问该网址,为什么还要从JavaScript访问该网址?使用OriginatingRequest bean,您可以执行以下操作:
<dsp:getvalueof bean="/OriginatingRequest.requestUri" var="requestUri" />
这将允许您按以下方式进行检查:
<c:when test="${fn:containsIgnoreCase(requestUri, 'homepage') or fn:containsIgnoreCase(requestUri, 'accountpage')}">
// need to do some operation for this particular page only.
</c:when>
这是满足您上述特定用例的最简单方法。
答案 1 :(得分:1)
您要实现的目标存在许多问题。
JavaScript代码(在<script/>
标记内)在客户端执行,而JSP EL代码(在<c:when/>
标记和fn:containsIgnoreCase()
函数中)在服务器端执行。
两位代码不在同一系统中运行。他们没有彼此的可见性
两位代码不会同时运行。当服务器生成HTTP响应时,将执行服务器端代码,并将生成的HTML发送回浏览器。然后,浏览器将执行客户端代码。因此,尽管您的javascript代码出现在JSP文件中的JSP EL代码之前,但它们将在不同时间执行 - JSP EL代码将首先执行(由服务器执行),然后JavaScript将被执行(由浏览器执行)
最后,至少,语言不一样。即使两个代码要在同一个系统中执行,EL也不是JavaScript而JavaScript不是EL。在一个块中以一种语言声明的变量在另一个块中的另一种语言中将不可见。
您可以使用一种语言(EL)编写所需的所有逻辑,并使用pageContext.request.requestURL
或pageContext.request.requestURI
对象属性
答案 2 :(得分:0)
试试这个:
<html>
<script language="javascript" type="text/javascript">
function call(){
var name = "xyz";
window.location.replace("a.jsp?name="+name);
window.onload = function() {
call();
}
</script>
<%
String name=request.getParameter("name");
if(name!=null){
out.println(name);
}
%>
</html>