【问题标题】:Javascript method that receives a value from a servlet not working从 servlet 接收值的 Javascript 方法不起作用
【发布时间】:2011-12-09 06:50:10
【问题描述】:

我有一个 JavaScript 方法,在文档正文 onload() 事件上应该显示警报。

它有一个 servlet 提供的字符串参数。该方法确实获得了值,但它没有做任何事情,所以我不知道我的逻辑是否错误,或者在 HTML 中这样做是否有限制。

我的脚本代码:

function Check1(temp) {
    if (temp.toString().length > 5) {
        jAlert('success', 'This is the success dialog.', 'Success Dialog');
    }         
} 

HTML 代码:

<body onload="Check1(<c:out value="${CFP}"/>)">
    <div id="main">

Servlet 代码:

Fmsg = "Fornecedor " + ID + " - " + nome + " foi criado";         
request.setAttribute("CFP",Fmsg);
userPath = "/Fornecedor";  

非常感谢任何建议。

【问题讨论】:

  • 尝试用引号将值括起来:onload="Check1('&lt;c:out value="${CFP}"/&gt;')";,以便将其作为字符串传递。

标签: java javascript html servlets jstl


【解决方案1】:

如果您所说的“HTML”字面意思是 .html 文件,那么是的,这是一个限制。

您试图将 JSP(特别是 &lt;c:out /&gt; 标记)放在一个普通的 .html 文件中,这不起作用,除非您已将 Servlet 容器配置为将 .html 文件视为 JSP(说实话,我什至不确定是否可能)。

【讨论】:

  • 抱歉html部分我真正想写的是jsp。
【解决方案2】:

在函数内部,您期望 temp 是一个字符串值。假设${CFP}返回一个字符串值Fornecedor 1 - somenome foi criado,那么

<body onload="Check1(<c:out value="${CFP}"/>)">

会生成如下

<body onload="Check1(Fornecedor 1 - somenome foi criado)">

(自己看,在浏览器中打开页面,右键查看源代码)

这是无效的 JavaScript 语法。您实际上想将文字字符串作为函数参数传递。在这种情况下,您的函数最终应如下所示:

<body onload="Check1('Fornecedor 1 - somenome foi criado')">

现在,让我们将其反向移植到负责生成 HTML/JS 代码的 JSP 代码:

<body onload="Check1('<c:out value="${CFP}"/>')">

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-19
    • 1970-01-01
    • 2016-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多