如何在 JSP 中将 JavaScript 值传递给 Scriptlet?
Posted
技术标签:
【中文标题】如何在 JSP 中将 JavaScript 值传递给 Scriptlet?【英文标题】:How do I pass JavaScript values to Scriptlet in JSP? 【发布时间】:2011-08-07 17:54:26 【问题描述】:谁能告诉我
【问题讨论】:
您能否提供更准确的需求细节?比如你打算实现什么……比如可能是一些伪代码之类的? 【参考方案1】:我可以提供两种方式,
a.jsp,
<html>
<script language="javascript" type="text/javascript">
function call()
var name = "xyz";
window.location.replace("a.jsp?name="+name);
</script>
<input type="button" value="Get" onclick='call()'>
<%
String name=request.getParameter("name");
if(name!=null)
out.println(name);
%>
</html>
b.jsp,
<script>
var v="xyz";
</script>
<%
String st="<script>document.writeln(v)</script>";
out.println("value="+st);
%>
【讨论】:
b.jsp 建议不起作用,它会打印出<script>document.writeln(v)</script>
是的 b.jsp 无法正常工作。谁能帮我让它工作【参考方案2】:
您的 javascript 值在客户端,您的 scriptlet 在服务器端运行。因此,如果您想在 scriptlet 中使用您的 javascript 变量,您需要提交它们。
要实现这一点,要么将它们存储在输入字段中并提交表单,要么执行 ajax 请求。我建议您为此研究 JQuery。
【讨论】:
【参考方案3】:简单,你不能!
JSP 是服务器端,javascript 是客户端,意思是在评估 javascript 时不再有“jsp 代码”。
【讨论】:
【参考方案4】:我把这个问题解释为:
“谁能告诉我如何传递值 for JavaScript 以在 JSP 中使用?”
如果是这种情况,该 HTML 文件会将服务器计算的变量传递给 JSP 中的 JavaScript。
<html>
<body>
<script type="text/javascript">
var serverInfo = "<%=getServletContext().getServerInfo()%>";
alert("Server information " + serverInfo);
</script>
</body>
</html>
【讨论】:
可能是您没有正确阅读问题,他想将 javascript 值传递给 scriplet 标签,而不是将 scriplet 中的值传递给 javascript :)【参考方案5】:你不能这样做,但你可以做相反的事情:
在你的jsp中你可以:
String name = "John Allepe";
request.setAttribute("CustomerName", name);
访问js中的变量:
var name = "<%= request.getAttribute("CustomerName") %>";
alert(name);
【讨论】:
【参考方案6】:如果你说你想在 javascript 中将 javascript 值从一个 jsp 传递到另一个,那么使用 URLRewriting 技术将 javascript 变量传递给下一个 jsp 文件并在请求对象的下一个 jsp 中访问它。
否则你不能做到这一点。
【讨论】:
【参考方案7】:如您所料,这不可能。但是你可以做这样的事情。将您的 java 脚本值传递给 servlet/控制器,进行处理,然后将该值传递给 jsp 页面,方法是根据您的要求将其放入某个对象中。然后,您可以根据需要使用此值。
【讨论】:
【参考方案8】:这是为其他登陆这里的人准备的。 首先你需要一个servlet。我使用了@POST 请求。 现在在您的 jsp 文件中,您有两种方法可以做到这一点:
AJAX 的复杂方式,如果你是 jsp 新手的话: 您需要使用要在 java 类中使用的 javascript var 发布帖子,并使用 JSP 从您的请求中调用您的 java 函数:
$(document).ready(function()
var sendVar = "hello";
$('#domId').click(function (e)
$.ajax(
type: "post",
url: "/", //or whatever your url is
data: "var=" + sendVar ,
success: function()
console.log("success: " + sendVar );
<%
String received= request.getParameter("var");
if(received == null || received.isEmpty())
received = "some default value";
MyJavaClass.processJSvar(received);
%>;
);
);
);
仅使用 JSP 的简单方法:
<form id="myform" method="post" action="http://localhost:port/index.jsp">
<input type="hidden" name="inputName" value=""/>
<%
String pg = request.getParameter("inputName");
if(pg == null || pg.isEmpty())
pg = "some default value";
DatasyncMain.changeToPage(pg);
%>;
</form>
当然在这种情况下你仍然需要从 JS 中加载输入值(目前我还没有想出另一种加载方式)。
【讨论】:
【参考方案9】:我使用了 scriptlet、声明和表达式标签的组合...
<%!
public String st;
%>
<%
st= "<html> <script> document.writeln('abc') </script> </html>";
%>
<%=
" a " + st + " <br> "
%>
上面的代码在我的情况下工作得很好。
【讨论】:
以上是关于如何在 JSP 中将 JavaScript 值传递给 Scriptlet?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 QWebEngineView 中将值从 QML 传递到 JavaScript
如何在struts 2中将迭代器索引值传递给Javascript?
在 JavaScript 中将多个数组值作为 url 变量传递