質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Null

Nullとは、プログラミング言語やデータベースにおけるデータ表現の一種です。コンテキストによって"空"もしくは"長さ0の文字列"、”未知・不明”を意味します。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

8913閲覧

nullを空白で表示させたいです。

Ra66it

総合スコア0

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Null

Nullとは、プログラミング言語やデータベースにおけるデータ表現の一種です。コンテキストによって"空"もしくは"長さ0の文字列"、”未知・不明”を意味します。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2021/11/30 04:21

編集2021/11/30 05:21

前提・実現したいこと

jspでDBに接続してデータの一覧を表で表示させるWEBアプリを作っています。
データのない状態だとHTMLでNULLと表示されるのですが、空白で表示させたいです。
IF文で判定するとNULLのデータを空白にできたのですが、同じ列のデータのある表が表示されなく(データのあるマスだけが消えてずれる感じ)なってしまって困っています。
データのある所はそのまま表示させてないところ(NULL)だけ空白にするにはどうすればよいでしょうか。

該当のソースコード

jsp

1<%@ page pageEncoding="UTF-8" import="java.sql.*" %> 2 3<% 4StringBuffer sb = new StringBuffer(); 5 6Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 7Connection db=DriverManager.getConnection("jdbc:odbc:kanri", "" , "" ); 8 9Statement sql = db.createStatement(); 10ResultSet rs = sql.executeQuery("SELECT * FROM Kanri"); 11 12while(rs.next()) { 13  sb.append("<tr>"); 14  sb.append(" <td>" + rs.getString(1) + "</td>\n"); 15 sb.append(" <td>" + rs.getString(2) + "</td>\n"); 16 sb.append(" <td>" + rs.getString(3) + "</td>\n"); 17 sb.append(" <td>" + rs.getString(4) + "</td>\n"); 18 sb.append(" <td>" + rs.getString(5) + "</td>\n"); 19 sb.append(" <td>" + rs.getString(6) + "</td>\n"); 20 sb.append(" <td>" + rs.getString(7) + "</td>\n"); 21 sb.append(" <td>" + rs.getString(8) + "</td>\n"); 22 sb.append(" <td>" + rs.getString(9) + "</td>\n"); 23 sb.append(" <td>" + rs.getString(10) + "</td>\n"); 24 sb.append(" <td>" + rs.getString(11) + "</td>\n"); 25 sb.append(" <td>" + rs.getString(12) + "</td>\n"); 26 sb.append(" <td>" + rs.getString(13) + "</td>\n"); 27 sb.append(" <td>" + rs.getString(14) + "</td>\n"); 28 sb.append(" <td>" + rs.getString(15) + "</td>\n"); 29 sb.append(" <td>" + rs.getString(16) + "</td>\n"); 30 sb.append(" <td>" + rs.getString(17) + "</td>\n"); 31 sb.append(" <td>" + rs.getString(18) + "</td>\n"); 32 sb.append("</tr>\n"); 33} 34 35sql.close(); 36db.close(); 37%> 38 39<%= sb.toString() %>

試したこと

イメージ説明

jsp

1if (rs.getString(2) == null) { 2 sb.append("<td>" + "" + "</td>\n"); 3} 4これで空白になりましたが、日時に入ってたデータが消えて表がずれてしまいました。 5 6 else { 7 sb.append("<td>" + rs.getString(2) + "</td>\n"); 8} 9を入れると何も表示されなくなります。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2021/11/30 04:40

コードはマークダウンのcodeにてご提示ください
guest

回答2

0

自己解決

仲間が解決法をみつけてくれました。
ひとまず表示はできたので、三項演算子とメソッドで分かりやすく書き直せるように頑張ってみます!
回答ありがとうございました!!

jsp

1<%@ page pageEncoding="UTF-8" import="java.sql.*" %> 2 3<% 4StringBuffer sb = new StringBuffer(); 5 6Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 7Connection db=DriverManager.getConnection("jdbc:odbc:kanri", "" , "" ); 8 9Statement sql = db.createStatement(); 10ResultSet rs = sql.executeQuery("SELECT * FROM Kanri"); 11 12while(rs.next()) { 13 sb.append("<tr>"); 14 sb.append(" <td>"); 15 String a1 = rs.getString(1); 16 if (a1 == null) {} else {sb.append(a1);} 17 sb.append("</td>\n"); 18 sb.append(" <td>"); 19 String a2 = rs.getString(2); 20 if (a2 == null) {} else {sb.append(a2);} 21 sb.append("</td>\n"); 22 sb.append(" <td>"); 23 String a3 = rs.getString(3); 24 if (a3 == null) {} else {sb.append(a3);} 25 sb.append("</td>\n"); 26 sb.append(" <td>"); 27 String a4 = rs.getString(4); 28 if (a4 == null) {} else {sb.append(a4);} 29 sb.append("</td>\n"); 30 sb.append(" <td>"); 31 String a5 = rs.getString(5); 32 if (a5 == null) {} else {sb.append(a5);} 33 sb.append("</td>\n"); 34 sb.append(" <td>"); 35 String a6 = rs.getString(6); 36 if (a6 == null) {} else {sb.append(a6);} 37 sb.append("</td>\n"); 38 sb.append(" <td>"); 39 String a7 = rs.getString(7); 40 if (a7 == null) {} else {sb.append(a7);} 41 sb.append("</td>\n"); 42 sb.append(" <td>"); 43 String a8 = rs.getString(8); 44 if (a8 == null) {} else {sb.append(a8);} 45 sb.append("</td>\n"); 46 sb.append(" <td>"); 47 String a9 = rs.getString(9); 48 if (a9 == null) {} else {sb.append(a9);} 49 sb.append("</td>\n"); 50 sb.append(" <td>"); 51 String a10 = rs.getString(10); 52 if (a10 == null) {} else {sb.append(a10);} 53 sb.append("</td>\n"); 54 sb.append(" <td>"); 55 String a11 = rs.getString(11); 56 if (a11 == null) {} else {sb.append(a11);} 57 sb.append("</td>\n"); 58 sb.append(" <td>"); 59 String a12 = rs.getString(12); 60 if (a12 == null) {} else {sb.append(a12);} 61 sb.append("</td>\n"); 62 sb.append(" <td>"); 63 String a13 = rs.getString(13); 64 if (a13 == null) {} else {sb.append(a13);} 65 sb.append("</td>\n"); 66 sb.append(" <td>"); 67 String a14 = rs.getString(14); 68 if (a14 == null) {} else {sb.append(a14);} 69 sb.append("</td>\n"); 70 sb.append(" <td>"); 71 String a15 = rs.getString(15); 72 if (a15 == null) {} else {sb.append(a15);} 73 sb.append("</td>\n"); 74 sb.append(" <td>"); 75 String a16 = rs.getString(16); 76 if (a16 == null) {} else {sb.append(a16);} 77 sb.append("</td>\n"); 78 sb.append(" <td>"); 79 String a17 = rs.getString(17); 80 if (a17 == null) {} else {sb.append(a17);} 81 sb.append("</td>\n"); 82 sb.append(" <td>"); 83 String a18 = rs.getString(18); 84 if (a18 == null) {} else {sb.append(a18);} 85 sb.append("</td>\n"); 86} 87 88sql.close(); 89db.close(); 90%> 91

投稿2021/11/30 05:38

Ra66it

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2021/11/30 05:42

indexでgetしてすべて同じ対応ならfor使えば短くなるのでは。
guest

0

「試したこと」全てに適用でもできそうですが、メソッド作ったほうが良さそうですね。
三項演算子にすると短く書けます。

java

1( hoge == null ) ? "" : hoge

もしくはSQLでselect時にPostgreSQLのCOALESCE()のような機能でnullを空に置換して取得するとか、いっそUPDATEで空にしてしまうとか。

投稿2021/11/30 04:38

編集2021/11/30 04:42
m.ts10806

総合スコア80875

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Ra66it

2021/11/30 04:43

回答ありがとうございます。 ごめんなさい、理解力不足でどのように書いたらいいのか分かりません。 コードを詳しく書いていただけないでしょうか?
m.ts10806

2021/11/30 05:01 編集

まず、自身が試したことで出来たのかどうか教えて下さい。 三項演算子 sb.append(" <td>" + (( rs.getString(1) == null ) ? "" : rs.getString(1)) + "</td>\n"); メソッド化の例 String getStringValue(String v){ return ( v == null ) ? "" : v ; } 呼び出し sb.append(" <td>" +getStringValue( rs.getString(1)) + "</td>\n");
m.ts10806

2021/11/30 05:22

jsp直書きならメソッドはutilクラスとかに定義して呼び出してください(そこは調べて)
Ra66it

2021/11/30 05:27

<%@ page pageEncoding="UTF-8" import="java.sql.*" %> 1行目にこれは記入してありますがこれでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問