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 は作成中のメソッドを含むサーブレットに変換されることを知っています。オブジェクトがメソッドに渡されるため、メソッドはデフォルトで応答オブジェクトにアクセスできないため、出力データを応答からライターに渡すことができないことを知っておく必要がありrequestます。responseservice()

本当にメソッドを使用する必要がある場合 ( Raskolnikov が彼に +1 を示し<c:for ...>たように、私はおそらく JSTL から使用するでしょう)、メソッドで生成されたデータを 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>
于 2012-07-25T18:48:48.410 に答える