<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="ISO-8859-1" import="java.sql.*"%>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<title>Inline Editing: Form Controls</title>
<script type="text/javascript" src="../../lib.js"></script>
<script type="text/javascript" src="inline-editing.js"></script>
<link type="text/css" rel="stylesheet" href="Presidents.css">
</head>
<body>
<%
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conn = DriverManager.getConnection("jdbc:odbc:Presidents");
String sql = "SELECT PresidentID, FirstName, LastName, Bio FROM Presidents";
stmt = conn.prepareStatement(sql);
rs = stmt.executeQuery();
out.write("<h1>Presidents</h1>");
out.write("<p>Double click on any cell to edit the field. Click off the field to save your change.</p>");
out.write("<table>");
while (rs.next())
{
out.write("<tr id='" + rs.getString("PresidentID") + "'>");
/*line 31*/ out.write("<td class="editable" title='FirstName'>" + rs.getString("FirstName") + "</td>");
/*line 32*/ out.write("<td class="editable" title='LastName'>" + rs.getString("LastName") + "</td>");
/*line 33*/ out.write("<td class="editable" title='Bio'>" + rs.getString("Bio") + "</td>");
out.write("</tr>");
}
out.write("</table>");
}
catch(Exception e)
{
out.write("failed: " + e.toString());
}
finally
{
if (rs != null) rs.close();
if (stmt != null) stmt.close();
if (conn != null) conn.close();
}
%>
</body>
</html>
我在第31,32,33行收到以下错误
The method write(String, int, int) in the type Writer is not applicable for the arguments (String, String)
Syntax error on token "editable", , expected
我该怎么做才能解决这个问题?
答案 0 :(得分:1)
试试这个:
while (rs.next())
{
out.write("<tr id='" + rs.getString("PresidentID") + "'>");
/*line 31*/ out.write("<td class=\"editable\" title='FirstName'>" + rs.getString("FirstName") + "</td>");
/*line 32*/ out.write("<td class=\"editable\" title='LastName'>" + rs.getString("LastName") + "</td>");
/*line 33*/ out.write("<td class=\"editable\" title='Bio'>" + rs.getString("Bio") + "</td>");
out.write("</tr>");
}
你没有在标签的类名中转义。还要考虑我的评论永远不要在jsp中编写业务逻辑。在servlet中做数据库连接.Jsp应该只用于演示。
答案 1 :(得分:0)
转义引号(或使用单引号)。
改变这个:
out.write("<td class="editable" title='FirstName'>" + rs.getString("FirstName") + "</td>");
到此:
out.write("<td class=\"editable\" title='FirstName'>" + rs.getString("FirstName") + "</td>");
或者这个:
out.write("<td class='editable' title='FirstName'>" + rs.getString("FirstName") + "</td>");
答案 2 :(得分:0)
看起来像是一个错字:
out.write("<td class="editable" ...
应该是
out.write("<td class='editable' ...
代替。