【问题标题】:Passing a variable from Scriptlets to Javascript.将变量从 Scriptlet 传递到 Javascript。
【发布时间】:2012-03-14 09:33:55
【问题描述】:

我有这个代码 sn-p ::

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

【问题讨论】:

  • temp1 的值设置为隐藏字段,并在您的Javascript 中访问该隐藏字段的值。
  • &lt;input type="hidden" id="tempValue" name="tempValue" value="&lt;%=request.getAttribute("variable")%&gt;"&gt;。您现在可以在 Javascript 函数中获取此隐藏字段的值,例如 document.getElementById('tempValue').value;
  • KS... 会试一试。 !!谢谢。

标签: java javascript datagrid scriptlet


【解决方案1】:

当您需要 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 使用 value=temp1 的隐藏输入组件呈现您的 JSP。如果您想验证,只需查看生成的 HTML 的源代码,您应该会看到 input hidden 的值等于变量。

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

【讨论】:

  • 一个问题,试图从同一个隐藏字段中获取值并将其重新设置在同一个字段中?
【解决方案2】:

首先让我告诉你我在此观察到的几件事

1) 设置和获取请求需要页面提交,否则参数中不可用

2) Scriplet 和 jsp 以不同的方式编译,因为你的 scriplet 编译总是首先发生(无论是页眉正文还是页脚)

现在是我们如何做到这一点的建议

1) 使用 EJB 对象而不是请求对象

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

【讨论】:

    猜你喜欢
    • 2019-01-12
    • 1970-01-01
    • 2018-05-03
    • 2011-11-14
    • 2017-06-03
    • 2013-07-17
    • 2016-09-12
    • 2016-03-29
    • 2012-10-07
    相关资源
    最近更新 更多