所以我对以下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方法调用的格式是否相同?
谢谢
“在第二个参数之前存在”,这就是为什么我怀疑这个失败但我不知道我能做什么。
答案 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只处理渲染。