我想使用jsp文件中的函数打印出3个按钮。这样做的正确方法是什么,因为我的方式似乎是错误的。
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Test Page</title>
<%!
int j = 3;
%>
<%!
public void manyButtons() {
for (int i = 0; i < j; i++) {
%>
<input type="button" value="button<%=i%>"/>
<%!
}
}
%>
</head
>
<body>
<% manyButtons(); %>
</body>
</html>
答案 0 :(得分:2)
正如评论所说,你想避免使用Java。值得庆幸的是,您可以轻松地使用JSTL。像这样使用forEach循环:
<c:forEach var="i" begin="1" end="3" step="1" varStatus="status">
<input type="button" value="button${i}"/>
</c:forEach>
这应该复制你想要做的事情。
答案 1 :(得分:0)
我不是Java EE开发人员,但据我所知,您的JSP将被转换为servlet,其中包含您正在创建的方法。您必须知道,request
和response
对象被传递给service()
方法,因此默认情况下您的方法无法访问响应对象,因此无法将输出数据输出到编写器响应。
如果你真的必须使用方法(我可能会使用来自JSTL的<c:for ...>
,例如Raskolnikov showed +1,那么你可以将方法中生成的数据作为String返回并在<%= manyLabels() %>
中使用它们。我的意思是像
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Test Page</title>
<%!
public String manyLabels(int j) {
StringBuilder sb=new StringBuilder();
for (int i = 0; i < j; i++) {
sb.append("<input type=\"button\" value=\"button"+i+"\"/>");
}
return sb.toString();
}
%>
</head
>
<body>
<%= manyLabels(3) %>
</body>
</html>