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

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

ただいまの
回答率

90.48%

  • Java

    14126questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Seasar2

    57questions

    Seasar2はJ2EE/Java EEでの大規模な開発を効率良く行なうためのフレームワークです。 必要な設定ファイルを従来のものと比べて少なくし、依存性を分離して記述しています。 そのため、生産性の高いプログラム開発が可能です。

フレームワーク使用時のDBからの値表示方法について

受付中

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 2,133

anna10

score 41

フレームワークにおけるDBの値の表示についての質問です。

環境は、
Windows7
eclipice3.6
Java1.6
Tomcat7.0
XAMPP1.8.1
Seasar2(SAStruts、S2Dao)
を使用しています。環境構築などは全て設定済みです。

Doltengプロジェクトにて作成しています。

まずは画面間での値の受け渡しと、DBの値を表示(所謂セレクト処理)させようとしているところです。

以下が入力画面と出力画面のjspとなります

index.jsp
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>入力画面</title>
</head>
<body bgcolor="#EE82EE">
<h1>初めてのフレームワーク</h1>
<div align="center"><html:errors/></div>
<s:form method="POST">
<div align="center">パイロットの名前
    <html:text property="pilotname" /></div>
    
    <table style="margin-top:5px;margin-left:500px">
        <tr>
           <td rowspan="2"><b>所属</b></td>
          <td><html:radio property="ms" value="1" />ネオ・ジオン</td>
          <td><html:radio property="ms" value="2" />連邦</td>
          <td><html:radio property="ms" value="3" />ビスト財団</td>
        </tr>
        </table>
        <br>
      <div align="center"><s:submit property="echo" value="ポチっとな" /></div>
      </s:form>
</body>
</html>
>

echo.jsp
    pageEncoding="UTF-8"%>
    <%@ page import="gundam.form.*"%>
    <%@ page import="gundam.entity.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>出力画面</title>
</head>
<body bgcolor="#98FB98">
パイロット認証しました。ようこそ${f:h(pilotname) }さん!
<br>
選択出来る機体は以下です。張り切って出撃しましょう!
<br>

<div id="prefItems">
    <span id="id">${f:h(name) }</span>
    
    <br/>
</div>
</body>
</html>

jspに対応している、ActionクラスとFormクラスです。

Actionクラス
import gundam.dao.GundamDao;
import gundam.entity.Gundam;
import gundam.form.EchoForm;

import javax.annotation.Resource;

import org.seasar.framework.container.SingletonS2Container;
import org.seasar.struts.annotation.ActionForm;
import org.seasar.struts.annotation.Execute;

/**
 * 動的webプロジェクトでいうservlet
 * 「Action」で終わる必要がある。命名時に。
 * @author
 *
 */
public class IndexAction {
    
    @Resource
    @ActionForm
    protected EchoForm echoForm;
    
    private Gundam[] prefItems;
    
    // 入力画面のアクション
    @Execute(validator = false)
    public String index() {
        
        return "index.jsp";
    }
    
    // 出力画面のアクション
    @Execute(validator=true,input="index.jsp")
    public String echo(){
         
        return "echo.jsp";
    }
    
    // DBから値を受け取るメソッド
    public String initialize(){
        
        // DAOクラスのコンポーネント?をゲット。正直わけ分からん
        GundamDao dao = SingletonS2Container.getComponent(GundamDao.class);
        
        /**
         *  Daoクラスのセレクトメソッドを呼ぶ
         *  これは何とな~く分かる
         */
        prefItems = dao.selectAll();
        
        return "echo.jsp";
    }
}
>

Formクラス
import org.seasar.struts.annotation.Required;

/**
 * JabaBeanのようなものらしい
 * 最後は「Form」で終わる必要あり
 * @author 
 *
 */
public class EchoForm {
    
    @Required
    public String pilotname;
    
    public String ms;
    

    public String getMs() {
        return ms;
    }

    public void setMs(String ms) {
        this.ms = ms;
    }

    public String getPilotname() {
        return pilotname;
    }

    public void setPilotname(String pilotname) {
        this.pilotname = pilotname;
    }
    
    

}

ここままで画面間の値の受け渡しは成功しました。なので次はDBに格納してある値を表示させたいのです。

eclipceでMySQLのテーブルは確認出来ています。
以下にスクリーンショットを載せます。

イメージ説明
右側のビュワーでjdbc.diconから、作成したテーブルが確認出来ます。

イメージ説明
テーブルの中身です。

index.jspにて、ネオ・ジオンを選んだ場合は1・2が、連邦を選んだ場合は3・4が、ビスト財団を選んだ場合は5・6を表示させたいので、Daoクラスとentityクラスを自動生成しました。


Daoクラス
import gundam.entity.Gundam;

import org.seasar.dao.annotation.tiger.Arguments;
import org.seasar.dao.annotation.tiger.Query;
import org.seasar.dao.annotation.tiger.S2Dao;

/**
 * 簡略化されたDaoとの事だが・・・・
 * 今は実感出来ず
 * @author 
 *
 */
@S2Dao(bean=Gundam.class)
public interface GundamDao {

    @Query("ORDER BY id")
    public Gundam[] selectAll();

    @Arguments("id")
    public Gundam selectById(Integer id);

    public int insert(Gundam gundam);

    public int update(Gundam gundam);

    public int delete(Gundam gundam);

}>


当初はecho.jspにて、スクリプトレットを用いて、
    pageEncoding="UTF-8"%>
    <%@ page import="gundam.form.*"%>
    <%@ page import="gundam.entity.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>出力画面</title>
</head>
<body bgcolor="#98FB98">
パイロット認証しました。ようこそ${f:h(pilotname) }さん!
<br>
選択出来る機体は以下です。張り切って出撃しましょう!
<br>
<!-- ここからDBの値を表示させたい -->
<%GundamEntity gundam = new GundamEntity();%>
    <%=gundam.getMs() %>
    <br/>
</div>
</body>
</html>>
コード

としましたが、nullと表示されたので違いました。
そもそも今までjspでDBの値を表示させる時は、セレクト処理でリストに積めたものを順番に表示させる、という手法(動的webプロジェクト作成では)だったので、同じような事をする必要があるのか?というところで手詰まりとなってしまいました。ネットでも調べているのですが、有用な情報を検索出来ていないというのが現状です。

長大になってしまいましたが、「フレームワークでのライジオボタン選択時に、それに紐付いているDBの値の表示方法」をどなたか教えて頂けないでしょうか。どうかよろしくお願い致します。
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

-1

ライジオボタンはラジオボタンでしょうか?
ラジオボタンにIDを持たせて、
それをサービスクラスでSelectByIdでDBから取得して表示することはできませんか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/05/10 10:09

    回答した人への礼儀としてコメントくらいは返しましょう。
    放置はあまりにも質問しといて無責任すぎると思います。

    キャンセル

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

  • ただいまの回答率 90.48%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Java

    14126questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Seasar2

    57questions

    Seasar2はJ2EE/Java EEでの大規模な開発を効率良く行なうためのフレームワークです。 必要な設定ファイルを従来のものと比べて少なくし、依存性を分離して記述しています。 そのため、生産性の高いプログラム開発が可能です。