在JSP文件中正确使用函数

时间:2012-07-25 18:15:36

标签: java javascript html jsp

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

2 个答案:

答案 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,其中包含您正在创建的方法。您必须知道,requestresponse对象被传递给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>