无法在java调用中引用javascript变量

时间:2014-05-20 13:11:19

标签: java javascript eclipse

我试图在java调用中引用javascript变量但不幸的是我得到错误,变量(userURL)无法解析。我如何引用变量?

<%@ page language="java" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>
<%@ page import="java.net.*, org.owasp.esapi.ESAPI, org.owasp.esapi.Validator" %>

<script type="text/javascript" language="javascript">

function validateForm()
{

    var userURL = "http://www.google.com";
    var isValidURL = <% ESAPI.validator().isValidInput("URLContext", userURL, "URL", 255, false); %>
    if (isValidURL) {
        alert("true");
    } else {
        alert("false");
    }
}

</script>

3 个答案:

答案 0 :(得分:4)

网络浏览器中存在userURL

JSP代码在Web服务器上运行。

如果不另外发出HTTP请求,则无法将userURL从浏览器传递到服务器。

因此,您需要将验证代码移至客户端(Javascript),或将其发布到服务器(表单提交或Ajax)。

答案 1 :(得分:0)

您无法在JSP srciptlet中引用JS变量。 您应该定义JSP变量。

答案 2 :(得分:0)

对于所有意图,不是JSP代码的所有内容都可以被视为哑字符串,而对Java容器没有任何意义。这意味着您的服务器对Javascript变量的值一无所知。 Javascript代码不是与Java代码同时执行,而是在应用程序生命周期的后期执行,而不是在服务器上,而是在客户端,即浏览器上执行。

我不知道你要做什么,但你应该研究Ajax调用,这样你就可以通过特定的调用将信息(例如变量值)从客户端传递到服务器。