[英]Why isn't JSP out.print() function working properly
我一直在使用JSP + Java + Html,并且在for周期中遇到了out.print()函数的问题。 我的函数getGeneAvailableTaxonomies()
返回一个整数列表(类型为List<Integer>
),我想在接口中打印这些数字。
这是我的代码:
for(Integer i : ApplicationExtender.getApplicationExtender(application).getGeneAvailableTaxonomies())
{
out.print(String.format("<option value=\"%1$d\">%2$s</option>", i, TaxonId.getOrganismFromId(i)));
}
doce %1$d
应该代表第i个整数值,而%2$s
应该代表另一个参数,即分类法ID值为String。
但是,不幸的是,这出现了:
虽然我希望看到以下内容:
我的out.print()函数调用肯定存在错误...但是怎么了?
非常感谢
您不需要“ $”格式的字符串。 如您所知,使用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>
如果要像在Servlet中一样使用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>
尽我所能尝试一下:
String option = "<option value=\""+d+"\">"+s+"</option>";
out.print(option);
使用String.format
out.print(String.format("<option value=\"%d\">%s</option>", i, TaxonId.getOrganismFromId(i)));
正如您在评论中提到的那样更新 , TaxonID.getOrganismFromId(i)
返回int
因此原始代码%2$s
到%2$d
仅有一个更改,就这样...
out.print(String.format("<option value=\"%1$d\">%2$d</option>", i, TaxonId.getOrganismFromId(i)));
当我在http://ideone.com/u8fDT上运行它时,您的print
/ format
代码似乎正常。 您可能只需要重新编译JSP(应该自动发生,但有时可能需要重新启动服务器)。
同样,将HTML和Java代码混合在一起是一种非常痛苦的工作方式。 JSTL或像FreeMarker这样的模板系统将使您的生活更轻松。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.