2

我想使用 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>
4

2 回答 2

2

正如评论所说,您要避免为此使用Java。值得庆幸的是,您可以使用 JSTL 轻松做到这一点。像这样使用 forEach 循环:

 <c:forEach var="i" begin="1" end="3" step="1" varStatus="status">
   <input type="button" value="button${i}"/>
 </c:forEach>

这应该复制您正在尝试做的事情。

于 2012-07-25T18:45:03.197 回答
1

我不是 Java EE 开发人员,但据我所知,您的 JSP 将被翻译成包含您正在创建的方法的 servlet。您必须知道,request对象response被传递给service()方法,因此您的方法默认情况下无法访问响应对象,因此它无法将输出数据从响应中发送给编写器。

如果您真的必须使用方法(我可能会使用<c:for ...>来自 JSTL 的Raskolnikov 为他显示+1),您可以将方法中生成的数据作为字符串返回并在<%= 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>
于 2012-07-25T18:48:48.410 回答