从servlet接收值的Javascript方法不起作用

时间:2011-10-17 12:45:09

标签: java javascript html servlets jstl

我有一个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";  

所以非常感谢任何建议。

2 个答案:

答案 0 :(得分:0)

在函数内部,您期望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}"/>')">

答案 1 :(得分:0)

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

您试图将JSP(特别是<c:out />标记)放在一个普通的.html文件中,除非您已将Servlet容器配置为将.html文件视为JSP(以及说实话,我甚至不确定是否可能。)