• 締切済み

JSPの内容をcssで自由にデザイン

Java 6 HTML 4.01 Windows 7 です。 以下のコードですが、cssでセルの1列目だけ色を変えたいのですが、どうすればいいでしょうか? 今は<td class="aiueo">を入れただけなので、全ての列の色が変わってしまっています。 <%@ page contentType="text/html; charset=Shift_JIS" %> <%@ page import="java.util.*" %> <jsp:useBean id="cb" class="mybeans.Beanファイル名" scope="request"/> <%! ArrayList colname; ArrayList data; %> <% colname = cb.getColname(); data = cb.getData(); %> <html> <head> <title>サンプル</title> </head> <body> <center> <h2>ようこそ</h2> <hr/> Welcome!<br/> <br/> <table border="1"> <tr bgcolor="#E0C76F"> <% for(int column=0; column<colname.size(); column++){ %> <th> <%= (String) colname.get(column) %> </th> <% } %> </tr> <% for(int row=0; row<data.size(); row++){ %> <tr> <% ArrayList rowdata = (ArrayList) (data.get(row)); for(int column=0; column<rowdata.size(); column++){ %> <td class="aiueo"> <%= rowdata.get(column) %> </td> <% } %> </tr> <% } %> </table> </center> </body> </html>

みんなの回答

  • Ogre7077
  • ベストアンサー率65% (170/258)
回答No.3

No.2 の回答と同様ではありますが タグ内でスクリプトレットを使われると読みづらいので 冗長ではありますが以下の様に記述するのがオススメです。 <% if (column == 0) { %> <td class="aiueo"><%= rowdata.get(column) %></td> <% } else { %> <td><%= rowdata.get(column) %></td> <% } %>

KAIJI-000
質問者

補足

早速試してみました。 <td class=" aiueo "> <%= rowdata.get(column) %> </td> <% } %> を <% if (column == 0) { %> <td class="aiueo"><%= rowdata.get(column) %></td> <% } else { %> <td><%= rowdata.get(column) %></td> <% } %> に書き換えましたがコンパイルエラーとなりました。 ただ、行数を見てみると164とかになってますが、jspファイルを見ても Beanファイルを見てもそんなに行はありません。Javaは何かのプログラム(クラスライブラリ?)を 見ているのでしょうか? type 例外レポート メッセージ 説明 The server encountered an internal error () that prevented it from fulfilling this request. 例外 org.apache.jasper.JasperException: JSPのクラスをコンパイルできません: An error occurred at line: 164 in the generated java file Syntax error, insert "}" to complete Block An error occurred at line: 174 in the generated java file Syntax error on token "}", delete this token An error occurred at line: 175 in the generated java file Syntax error, insert "}" to complete ClassBody Stacktrace: org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92) org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330) org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:439) org.apache.jasper.compiler.Compiler.compile(Compiler.java:334) org.apache.jasper.compiler.Compiler.compile(Compiler.java:312) org.apache.jasper.compiler.Compiler.compile(Compiler.java:299) org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:586) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 注意 原因のすべてのスタックトレースは、Apache Tomcat/6.0.20のログに記録されています。

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.2

こんにちは。 <td class="aiueo"> の部分を <td<%= column == 0 ? " class=\"aiueo\" : "" %>> にすれば、一回目のループ時のみclass="aiueo"が出力されるようになります。

KAIJI-000
質問者

お礼

回答ありがとうございました!

KAIJI-000
質問者

補足

そのままコピーペーストしましたが(65のところ)以下のようなエラーが出ました。 説明 The server encountered an internal error () that prevented it from fulfilling this request. 例外 org.apache.jasper.JasperException: JSPのクラスをコンパイルできません: JSPファイル: /ファイル名.jsp の中の65行目でエラーが発生しました String literal is not properly closed by a double-quote 62: ArrayList rowdata = (ArrayList) (data.get(row)); 63: for(int column=0; column<rowdata.size(); column++){ 64: %> 65: <td<%= column == 0 ? "class=\"aiueo\" : "" %>> 66: <%= rowdata.get(column) %> 67: </td> 68: <% Stacktrace: org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92) org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330) org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:439) org.apache.jasper.compiler.Compiler.compile(Compiler.java:334) org.apache.jasper.compiler.Compiler.compile(Compiler.java:312) org.apache.jasper.compiler.Compiler.compile(Compiler.java:299) org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:586) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 注意 原因のすべてのスタックトレースは、Apache Tomcat/6.0.20のログに記録されています

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.1

普通に tr td:first-child{color:red;} または tr td{color:red;} tr td+td{color:black;} なお <tr bgcolor="#E0C76F"> は良くない <tr>としておいて th{background-color:#E0C76F;}

KAIJI-000
質問者

お礼

回答有難うございます。

KAIJI-000
質問者

補足

このままだと全ての列の色が変わってしまいます。 ある1列だけ変えたいです。

関連するQ&A

専門家に質問してみよう