我有这段代码片段::
<script type="text/javascript">
function gotoa(){
<%!
public void a(){
String temp1;
PopulateTextbox obj = new PopulateTextbox();
temp1 = obj.method();
request.setAttribute("variable", temp1);
}
%>
var myVar = <%=request.getAttribute("variable")%>
}
</script>
我想要做的是在我的JavaScript函数gotoa()中获取变量temp1的值。在此特定代码中,我收到错误无效请求
request.setAttribute("variable", temp1);
我的主要目的是在某个按钮单击事件上调用函数a(),以便我的脚本让代码再次运行,并在变量temp1中传递新值。然后将传递给gotoa()作为我的数据网格的源(不在此代码中)。基本上我想刷一些按钮点击网格。我做得对吗?请帮忙。谢谢。
答案 0 :(得分:5)
当您需要temp1
内的变量gotoa()
的值时,请执行以下操作:
<% String temp1; // Store value in temp1 variable for later use
PopulateTextbox obj = new PopulateTextbox();
temp1 = obj.method();
%>
<script>
function gotoa(){
var temp1Val = document.getElementById("hiddenTemp1").value;
// put your logic here
document.getElementById("hiddenTemp1").value = tempVal1;
}
</script>
<body>
<form action="otherPage.jsp">
<!-- use the value of temp1 variable -->
<input type="hidden" name="hiddenTemp1" id="hiddenTemp1" value="<%=temp1%>">
<input type="button" onclick="gotoa()" value="GotoA">
<input type="submit" value="Submit New Value">
</form>
</body>
首先将值赋给变量temp1。然后使用scriptlet使用值= temp1的隐藏输入组件渲染JSP。如果要验证,只需查看生成的HTML源,您应该看到隐藏的输入值等于变量。
提交表单时,hiddenTemp1的值将在Request中可用。 如果要更改此隐藏组件的值,可以在组件中重新设置值。
答案 1 :(得分:0)
首先让我告诉你我在这个
中观察到的一些事情1)设置和获取请求需要页面提交,否则它将不会在参数
中提供2)Scriplet和jsp以不同的方式编译,因为你的scriplet compiliation总是发生(无论它是标题正文或页脚)首先
现在就我们如何做到这一点的建议
1)使用EJB对象而不是请求对象
2)使用隐藏的输入标签来设置和获取所需的值,将getter方法分配给输入标签的值,如',当需要变换时需要更改,你需要提交表单,如果你不需要重新加载整个页面引用ajax方法来单独更改值而无需重新加载页面