使用JSP生成按钮故障

时间:2013-05-15 09:11:17

标签: java html jsp

所以我对以下JSP代码有这个问题。

        while(rs.next()){
                out.println("<tr>");
                out.println("<td>" + rs.getString(2) + "</td>");
                out.println("<td> <button type='submit' value='delete' onclick = deleteObj(out, " + rs.getString(2) + ")'>HI</button> </td>");
                out.println("</tr>");
        }

在这里可以看到函数看起来像onclick =“deleteObj(out,”fat ..etc,这句话似乎妨碍了我,我不知道该怎么做。

http://i.imgur.com/Z1D81Cw.png

另外,我想知道服务器如何知道deleteObj是一个JSP方法。点击时javascript方法调用的格式是否相同?

谢谢

“在第二个参数之前存在”,这就是为什么我怀疑这个失败但我不知道我能做什么。

2 个答案:

答案 0 :(得分:0)

尝试:

out.println("<td> <button type='submit' value='delete' onclick = deleteObj(out, '" + rs.getString(2) + "')>HI</button> </td>");

答案 1 :(得分:0)

我没看到该代码如何呈现您链接的输出。它会呈现:

... onclick = deleteObj(out,value)'>Hi</button>,其值为rs.getString(2),除非rs.getString(2)包含:{/ p>

"
fat

在这种情况下,您需要转义该引号和新行(请参阅StringEscapeUtils.escapeEcmaScript

您需要添加转义引号:

out.println("<td> <button type='submit' value='delete' 
  onclick = 'deleteObj(out, \"" + rs.getString(2) + "\")'>HI</button> </td>");

虽然要小心这种代码。如果rs.getString(2)中有引号怎么办?你也想看看这个答案:How to escape apostrophe or quotes on a JSP ( used by javascript )here是您要使用的方法的更新链接。

正如其他人所指出的那样,这是处理这个问题的一种非常糟糕的方式。您很少想在JSP中使用scriptlet。您希望控制器(或控制器后面的层)完成大部分工作。 JSP只处理渲染。