2012-03-14 224 views
1

我有这样的代码片段::将Scriptlets中的变量传递给Javascript。

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

+1

将'temp1'的值设置为隐藏字段,并在Javascript中访问此隐藏字段的值。 – Lion 2012-03-14 09:36:25

+0

如何做那个狮子? – 2012-03-14 09:37:52

+1

'”>'。你现在可以像这样'document.getElementById('tempValue')。value;'' – Lion 2012-03-14 09:40:39

回答

5

当你需要内部gotoa()变量temp1的价值做到以下几点:

<% 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的Hidden Input组件渲染JSP。如果你想验证,只需查看生成的HTML源代码,你应该看到输入隐藏的值等于变量。

当提交表单时,hiddenTemp1的值将在Request中可用。 如果您打算更改此隐藏组件的值,可以将该值设置回组件中。

+0

与此有关的一个问题,试图从同一个隐藏字段获取值并将其重新设置回到同一个字段中? – Sundhar 2013-08-27 05:29:40

0

首先让我告诉你几件事情我已经观察到了这种

1)设置和要求越来越需要一个页面提交,否则它不会在参数

2)Scriplet和JSP可编译以不同的方式,因为你的scriplet编图总是会发生的(不管它是头体或页脚)第一

现在,我们如何能做到这一点

1)使用EJB对象,而不是建议的请求对象

2)使用一个隐藏的输入标签来设置和获取所需的值,将getter方法赋值给输入标签的某些值,如'需要变更时需要提交表单,如果你不需要重新加载整个页面,请参考ajax方法来单独更改值,而不用重新加载页面