繁体   English   中英

将值从javascript传递到jsp中的scriplet时出错

[英]getting error while passing value from javascript to scriplet in jsp

我有一个要求,我需要将值从Javascript传递到JSP中的Scriplet。 我知道javascript是在客户端执行的,而jsp是在服务器端执行的。我已经在网上搜索和搜索了很多,但是直到现在我仍然找不到我想要的解决方案。 JSP代码如下。 javascript和scriplet都在同一jsp中。

 <script type="text/javascript">
   var strUrl = window.location.href;
   var aps = strUrl.toLowerCase().indexOf("values");
   var modifiedString = strUrl.substring(aps+8);
   var v = strUrl.indexOf(modifiedString);
   document.write(v);
</script>
 <%
    String st="<script>document.writeln(v)</script>";
    out.println("-----"+st);
    int pareseValue = Integer.parseInt(st);
    if(st.equals("0")){
      out.println("test");
     %>                     

   <h1><div class="xyz">
     <fmt:message>header.txt</fmt:message>
   </div></h1>                              

   <%
     }else{
   %>           

    <div class="pqr">
        <fmt:message>header1.txt</fmt:message>
   </div>
   <%
    }
   %>

在上面的代码中,我试图将Javascript中的值传递给脚本。 但是,当我尝试解析该字符串并将其转换为int时,我遇到了NumberFormatException。 看起来变量st不是字符串类型。

    String st="<script>document.writeln(v)</script>";
    out.println("-----"+st);
    int pareseValue = Integer.parseInt(st)

您能否让我知道上述代码有什么问题,以及如何解决我现在面临的问题。

感谢Vikeng

您不能将"<script>document.writeln(v)</script>"解析为int的原因是因为它包含数字以外的字符。

即使看起来它包含<script>标记-它仍然不是将执行或计算为数字的代码。 因为用引号引起来,所以它只是一个字符串。 因此, "<script>document.writeln(v)</script>"在解析器中看起来与"tic/v)neiwtm>oprs<citdun.rtl(<rp>"

但是,这有点有争议,因为不幸的是,您无法将值传递给scriptlet。 这完全是单向的。

为了使您的页面与Java通信,您需要在请求一些处理程序的同时传递参数。

例如,您可以执行一些异步JavaScript:

    var asyncHR = new XMLHttpRequest();
    var URL = "https://www.yourserver.com/intparser?st=v";
    asyncHR.open("GET", URL, true);
    asyncHR.send(); 

然后,您的请求处理程序可以采用该参数st ,对其进行解析或进行任何所需的操作,修改模型-将这个新值添加为属性,然后从JavaScript中重新加载该页面。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM