将一个变量从Scriptlets传递给Javascript。

时间:2012-03-14 09:33:55

标签: java javascript datagrid scriptlet

我有这段代码片段::

<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()作为我的数据网格的源(不在此代码中)。基本上我想刷一些按钮点击网格。我做得对吗?请帮忙。谢谢。

2 个答案:

答案 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方法来单独更改值而无需重新加载页面