您不需要格式字符串中的“$”。您可能知道,使用 scriptlet 并不是进行 Java Web 开发的好方法。我认为使用 JSTL 要好得多,因为您不会在 JSP 中将 Java 代码与标记混合在一起。
编辑:正如我之前所说,printf 方法不存在于out对象中,因为它是一个 JspWriter 并且 JspWriter 不继承自 PrintWriter(具有 printf)。对不起。所以,试试这个(它对我有用)。
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<select>
<%
String[] strings = new String[]{ "aaa", "bbb", "ccc", "ddd" };
for ( int i = 0; i < strings.length; i++ ) {
out.print( String.format( "<option value='%d'>%s</option>", i, strings[i] ) );
}
%>
</select>
</body>
</html>
如果您想像在 Servlets 中一样使用 PrintWriter,那么这将起作用:
<%@page import="java.io.PrintWriter"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<select>
<%
PrintWriter writer = new PrintWriter( out );
String[] strings = new String[]{ "aaa", "bbb", "ccc", "ddd" };
for ( int i = 0; i < strings.length; i++ ) {
writer.printf( "<option value='%d'>%s</option>", i, strings[i] );
}
%>
</select>
</body>
</html>