ついに夏本番!さぁ、家族でキャンプに行くぞ! >>

すみませんがどなたか助けてください!
strutsでの開発をすることとなり、現在勉強中なのですが最初のjspにて
parsingエラーとなりつまづいております。。
【現在の環境】
eclipse3.0.1
Tomcat 5.0.28
j2sdk1.4.2_08
struts1.1
主なプラグイン:
lomboz.301
(EMF 2.0.2)
tomcatplug-in V3
Hibernate synchoronizer 3.0.1
 以上のような環境でeclipseから新規プロジェクトを
Tomcatプロジェクトにて作成し、struts-blank.warを解凍したものをworkspaceにコピーしております。
 struts関連の参考サイトをみながら学習しておりましたが、
まず最初の"http://localhost:8080/プロジェクト名/index.jsp"にアクセスしてもエラーとなります。
エラーログ:
javax.servlet.ServletException: Missing message for key "welcome.title"~以下略

また、eclipseのindex.jspファイル上でもエラーが表示されておりまして、
<%@ taglib uri="/tags/struts-logic" prefix="logic" %>のところで
「JSP Parsing Error:"/tags/struts-logic"がみつかりません。」と表示されます。
環境設定に問題があるのでは・・と調べてはいるのですが2日悩んでおりますが未だ解決に至っておりません。
 http://localhost:8080/struts-blank/にアクセスするこは確認できております。
 とりわけ自信がないのはeclipseでのTomcatの設定なのですが、色々調べてみたつもりですが、
上手くいきません。
クラスパス:C:j2sdk1.4.2_08\tools.jar
ブートクラスパス:C:j2sdk1.4.2_08\rt.jar
         C:j2sdk1.4.2_08\charset.jar
以上の設定をしています。
eclipseでは不要とのことですが、
JAVA_HOMEやTOMCAT_HOMEなどは環境変数で
設定してみました。
 やれることはやったつもりなのですが..
もう私レベルでは手詰まりとなってしまいました。
どなたかお助けください。。。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

Missing message for key


ということですから、リソースファイルから指定されたキー(おそらくwelcome.title)が見つからないということだろうと思います。原因はいろいろ考えられますが、

・リソースファイルがstruts-config.xmlに登録されていない。
・<message-resouces>のリソースファイル名などが間違っている。
・指定のキーが記述されていない。あるいはキー名を間違えている。
・そもそもリソースファイルがない。あるいはリソースファイルの保管場所を間違えている。

といったところだろうと思います。そのあたりのリソースファイル関連を一通りチェックしてみてはいかがですか。

また、ご質問からすると、EclipseでTomcat-pluginやLombozを使った機能が完全に動作することを確認されていないように思えるのですが。まず、

・Eclipseが問題なく動く。
・Tomcatサーバが問題なく動く。
・インストールしたプラグインが問題なく動く。
・Eclipseからサーバの起動などが問題なく動く。
・もっともシンプルなJSP/サーブレットを使ったWebアプリケーションを問題なくデプロイできる。

以上のことをきちんと確認された上で、それからStrutsに挑戦されるのが良いと思います。でないと、果たしてStrutsの問題なのか、それ以前のEclipseやサーバの基本的な設定ミスなどの問題なのか、問題の切り分けがしにくくなりますから。
(既にそのあたりは完璧だ!というのであればご容赦ください)
    • good
    • 0
この回答へのお礼

お礼が遅くなりまして申し訳ありません!
eclipseでJAVAのビルドパスの「ソースおよび出力フォルダー」をプロジェクトになっていたのをフォルダに変更したら解決しました。
本当にありがとうございました。

お礼日時:2005/04/25 08:58

struts-logic.tldが見つからないのだと思います。


まずstruts-logic.tldファイルの有無と配置場所を確認して、
それにパスを通す設定をweb.xmlかJSPファイルに行ってください。
一般的にはtldファイルは/WEB-INF/tld/にあります。
もしtldファイルがあるようであれば、web.xmlに

<taglib>
<taglib-uri>struts-logic</taglib-uri>
<taglib-location>/WEB-INF/tld/struts-logic.tld</taglib-location>
</taglib>

のような記述を追加し、JSPの記述を

<%@ taglib uri="struts-logic" prefix="logic" %>

のように変更するか、
struts-logic.tldファイル自体を"/tags/struts-logic" の記述の設定に合わせて配置する必要があります。

メッセージのパスが通っていないようですし、
全般的にコンテンツは以下の構成が全然設定されていないようですが、
一度、ちゃんとコンテンツの構成と設定ファイルの内容を見比べてみてはいかがでしょうか?
    • good
    • 0
この回答へのお礼

お礼が遅くなりまして申し訳ありません!
eclipseでJAVAのビルドパスの「ソースおよび出力フォルダー」をプロジェクトになっていたのをフォルダに変更したら解決しました。
本当にありがとうございました。

お礼日時:2005/04/25 08:57

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QStrutsのtaglibについて

Strutsを最近学習し始めた超初心者ですが...

taglibを使えるようにするweb.xmlの設定なんですが。
なぜかエラーが出てしまいます。
環境はeclipse3.1.1 Struts1.2.9 apache-tomcat-5.5.25です。

web.xmlの記述は以下の通りです。

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app id="WebApp_ID" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<display-name>
test01</display-name>

<filter>
<filter-name>CharacterEncoding</filter-name>
<filter-class>filters.CharacterEncodingFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>CharacterEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>

<taglib>
<taglib-uri>/tags/struts-html</taglib-uri>
<taglib-location>/WEB-INF/lib/struts-html.tld</taglib-location>
</taglib>

</web-app>

<taglib>のところにエラーの×が出てしまうのですが。
何か間違ってますか??
とても困ってますので是非、わかる人お願いします!!

Strutsを最近学習し始めた超初心者ですが...

taglibを使えるようにするweb.xmlの設定なんですが。
なぜかエラーが出てしまいます。
環境はeclipse3.1.1 Struts1.2.9 apache-tomcat-5.5.25です。

web.xmlの記述は以下の通りです。

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app id="WebApp_ID" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xm...続きを読む

Aベストアンサー

実は1週間前初めて仕事でstrutsに触れたばかりですので間違っててもお許し下さい。

(これは必須じゃないけど)Action継承クラスでsaveErrorsメソッドを呼び出してエラーを設定して、
http://www.ingrid.org/jajakarta/struts/struts1.0/ja/target/documentation/api/org/apache/struts/action/Action.html

(えぇと確か)application.propertiesファイルにエラーメッセージを用意して、
html:errorからはそのプロパティを参照する形にしないと、
html:errorタグを記述しても出力されないっぽいですね。

↓参考↓
http://struts.wasureppoi.com/taglib/04_action_error.html


自分では検証しないで書いてますヨ

QJSPでリンクを利用してパラメータを次画面に渡す方法について。

一覧表示されているデータのNOをクリックすると、二つのパラメータでデータベースへアクセスし、該当データの詳細画面に遷移する、というプログラムを作っています。

データベースへアクセスする際に必要なIDは2つで、仮にID_A、ID_Bとします。
リンク部分のソースは

---------------------------------------------------------------------
<a href = "update_form.jsp?ID_A=<%= rs.getString("ID_A") %>">番号</a>
<input type="hidden" name="ID_B" value="<%= rs.getString("ID_Bcat_id") %>">
---------------------------------------------------------------------

としておりますが、次画面へ遷移すると、ID_Bの値はnullとなってしまうために、正常にデータの取得ができません。

二つのパラメータを使用する場合のパラメータを渡す方法を教えて頂きたいと思います。よろしくお願いします。

一覧表示されているデータのNOをクリックすると、二つのパラメータでデータベースへアクセスし、該当データの詳細画面に遷移する、というプログラムを作っています。

データベースへアクセスする際に必要なIDは2つで、仮にID_A、ID_Bとします。
リンク部分のソースは

---------------------------------------------------------------------
<a href = "update_form.jsp?ID_A=<%= rs.getString("ID_A") %>">番号</a>
<input type="hidden" name="ID_B" value="<%= rs.getString("ID_Bcat_id") %>">...続きを読む

Aベストアンサー

<a href = "update_form.jsp?ID_A=<%= rs.getString("ID_A") %>&ID_B=<%= rs.getString("ID_Bcat_id") %>">番号</a>

としてID_Bを&で繋げればMethod="get"で送れますね。
inputタグで送る場合はformタグでactionアトリビュートに飛ぶjspを指定してsubmitボタンかJavaScriptでsubmitさせなければならないと思います。

Qシンボルが見つかりませんというエラーが理解できません。

以下のようなじゃんけんゲームのプログラムを書いたのですが、「シンボルが見つかりません。」というエラーが表示されるのですが、エラーの意味が理解できず、解決できません。どこが間違っているのか教えていただけませんか。

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.io.File;

public class janken extends Applet
implements Runnable, ActionListener {
private static final int EXTERNAL_BUFFER_SIZE = 128000;

Image image[] = new Image[3];
Thread t;
int index1 = 0;
int index2 = 0;
String msg = "";
String msg1 = "";

boolean state = false;
Button b1 = new Button("ぐー");
Button b2 = new Button("ちょき");
Button b3 = new Button("ぱー");

public void init(){
for(int i = 0; i<=2; i++){
img[i] = getImage(getDocumentBase(),"hanabi" + (i+1) + ".JPG");
}
add(b1);
add(b2);
add(b3);
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
msg1 = "結果は・・";

}

public void paint(Graphics g){
g.drawImage(img[index1],350,30,this);
g.drawImage(img[index2],695,30,this);
g.drawString("コンピューター",420,300);
g.drawString("あなた",800,300);
g.drawString(msg,630,320);
g.drawString(msg1,550,320);
}

public void start(){
state = true;
t = new Thread(this);
t.start();

}

public void run(){
while(state){
index1++;
if(index1 == 3){
index1 = 0;
}
index2++;
if(index2 == 3){
index2 = 0;
}
repaint();
try {
Thread.sleep(60);
}catch(InterruptedException e) { }
}
}

public void actionPerformed(ActionEvent e){
if(state == false) {
start();
return;

}
state = false;
if(e.getSource() == b1) {
msg = "ぐー";
index2 = 0;
}

else if(e.getSource() == b2){
msg = "ちょき";
index2 = 1;
}

else if(e.getSource() == b3){
msg = "ぱー";
index2 = 2;
}
check();
repaint();
}

public void check() {
if(index1 == index2) msg ="あいこ";


else if (index1 == 0) {
if(index2 == 2) msg="あなたの勝ち";
else msg ="あなたの負け";
}

else if(index1 == 1) {
if(index2 == 0) msg="あなたの勝ち";
else msg="あなたの負け";
}

else if(index1 == 2) {
if(index2 == 1) msg="あなたの勝ち";
else msg="あなたの負け";
}

}
}

以下のようなじゃんけんゲームのプログラムを書いたのですが、「シンボルが見つかりません。」というエラーが表示されるのですが、エラーの意味が理解できず、解決できません。どこが間違っているのか教えていただけませんか。

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.io.File;

public class janken extends Applet
implements Runnable, ActionListener {
private static final int EXTERNAL_BUFFER_SIZE = 128000;

Image image[] = new Imag...続きを読む

Aベストアンサー

「シンボルを見つけられません。」というエラーの下に何か表示がありませんでしたか?そこにヒントがあると考えられます。
シンボルを見つけられませんといエラーが表示される主な理由は4つあります。
(1)クラス、メソッド、変数などの綴りミスや定義していない変数を使用している可能性がある。
(2)コンストラクタを呼び出すときに、newを忘れている可能性がある。(3)公開されていないメンバーを呼び出している可能性がある。
(4)必要なimport文を記述し忘れている可能性がある。
ここでのあなたのエラーは(1)番ではないでしょうか?上記ではimageとなっている変数がimgになっていますね。
これはエラー表示をよく見ることで意外と簡単に解決できるのです。
ゆっくり丁寧にエラー表示を見るように心がけることが大事ですよ。

Qstrutsで、JSP→アクションクラス→JSPの遷移ができない。

Strutsを勉強中の者です。
初心者的な質問で大変恐縮ですが、どこを調べても原因が分からなかったので、最終手段としてこちらに質問させて頂く事にしました。
どなたかご存知の方がいらっしゃいましたらご教授頂けないでしょうか。

・概要
 strutsで、JSP→クラスの実行→JSPの遷移ができない。

・環境
 WindowsXP
 Eclipse3.3
 Tomcat5.5
 GEF3.3
 struts-1.3.8
 JDK1.5

・詳細
 「Eclipseパーフェクトマニュアル ベストセレクション」
 という本をもとに勉強しています。
 ここのStrutsの例題で
 (1).簡易家計簿 <メニュー画面>(index.jsp)を表示
  (2).同画面のリンク(ShoppingInitEntry.do)をクリック
  (3).リンク(ShoppingInitEntry.do)に関連づけられているクラス(ShoppingInitEntryAction)の実行
  (4).データ入力画面(ShoppingUpdate.jsp)への遷移
 という事をやっています。
 実際に設定して、動かして見ましたが、
 Eclipseでデバッグを貼っていると(3)まで動作しているのが分かるのですが、(4)の画面まで遷移しません。
 具体的には、ShoppingInitEntry.doのリンクが
 ブラウザのアドレスバーに表示され、画面が真っ白の状態になります。
 (データ入力画面は表示されない)

 尚、直接(4)の画面(ShoppingUpdate.jsp)を開くと、
 データ入力画面がエラーも無く表示されます。

----
struts-config.xmlの設定が悪いのかと思ったのですが、
問題は無さそうに思います。(必要と思われる部分を抜粋)

<struts-config>
<global-forwards>
<forward name="ShoppingInitEntry" path="/ShoppingInitEntry.do"/>
</global-forwards>
<action-mappings>
<action path="/ShoppingInitEntry" type="MoneyBooks.ShoppingInitEntryAction" input="/index.jsp">
<forward name="success" path="/ShoppingUpdate.jsp"/>
</action>
</action-mappings>
</struts-config>
----
(3)ShoppingInitEntryActionのソースは、下記の通りです。

public class ShoppingInitEntryAction extends Action {

@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
return super.execute(mapping, form, request, response);
}

}

上記のreturn super.execute( ~の部分では nullを返しているようです。
Eclipseのコンソールにメッセージは表示されません。

A.原因は、struts-config.xmlでしょうか? それともクラスがnullを返している為に画面遷移しないのでしょうか? 
  そもそもsuper.executeのソースをjadのデコンパイルで追ったのですが、返り値としてNullしか返していない状態です。
B.また、馬鹿な質問ですが、そもそもjavaではnullを返り値で返すとオール×だと思っているのですが、この考え方は正しいでしょうか? 

大変お恥ずかしい限りですが、ご存知の方がいらっしゃいましたら教えて頂きたく宜しくお願い致します。

Strutsを勉強中の者です。
初心者的な質問で大変恐縮ですが、どこを調べても原因が分からなかったので、最終手段としてこちらに質問させて頂く事にしました。
どなたかご存知の方がいらっしゃいましたらご教授頂けないでしょうか。

・概要
 strutsで、JSP→クラスの実行→JSPの遷移ができない。

・環境
 WindowsXP
 Eclipse3.3
 Tomcat5.5
 GEF3.3
 struts-1.3.8
 JDK1.5

・詳細
 「Eclipseパーフェクトマニュアル ベストセレクション」
 という本をもとに勉強しています。
 ここの...続きを読む

Aベストアンサー

A.
executeの返り値(ActionMapping)にnullを返した場合、他への転送を行いません。
<forward name="success" path="/ShoppingUpdate.jsp"/>
ここで転送先を指定しているので、
return mapping.findForward("success"); のように
『succcess』を返せばShoppingUpdate.jspに画面が遷移すると思います。

B.
オール×の意味が良く分かりませんが…返り値を受け取るメソッド次第でしょう。

QStrutsのデータ受け渡しについて

画面遷移時のデータの引継ぎについて。

画面A→画面B

とデータを引き継ぎたい状態です。
画面AにはDBから取得した値を一覧表示しています。
--Action--
TestLogic testLogic = new TestLogic ();
ArrayList<datas> list = testLogic.getDatas();
request.setAttribute("sendMail", list);

補足:ArrayList<datas> listにはdatas.classが格納されています。
datasクラスはDB項目に合致したgetterとsetterをもった値保持用のクラスです。

--JSP--
<nest:iterate id="sendData" name="sendMail" indexId="idx">
<html:checkbox name="sendData" property="checkBox" indexed="true"/>
<bean:write name="sendData" property="user_id" />
<html:hidden name="sendData" property="user_id" indexed="true"/>
</nest:iterate>

の様になっています。
一覧表示されたデータ内のチェックボックスをチェックしたものだけを次画面で取得したいと考えていますが、次画面のACTIONにて
request.getAttribute("sendMail");
を行ってもNullが返ってきてしまいます。

Enumerationを使うことも考えたんですが、全てのHidden項目が返ってきてしまうのでデータの判別が出来ません。特に明細が複数行あるときには困難です。

こういったデータの引継ぎはどのように行えばよいのでしょうか?

どうぞご教授下さいますよう、お願い申し上げます。

画面遷移時のデータの引継ぎについて。

画面A→画面B

とデータを引き継ぎたい状態です。
画面AにはDBから取得した値を一覧表示しています。
--Action--
TestLogic testLogic = new TestLogic ();
ArrayList<datas> list = testLogic.getDatas();
request.setAttribute("sendMail", list);

補足:ArrayList<datas> listにはdatas.classが格納されています。
datasクラスはDB項目に合致したgetterとsetterをもった値保持用のクラスです。

--JSP--
<nest:iterate id="sendData" name="sendMail" indexId="idx">
...続きを読む

Aベストアンサー

Sessionを使うのが一般的でしょう。

QonClickで関数呼出し後に、結果に応じてsubmitを実行する方法

JavaScriptで、
function func() {
 if (a==0) {
  alert("処理しない");
  return false;
 }
 return true;
}
と、a=0ならfalseを返し、それ以外ならtrueを返す関数を定義しています。

そして、FORMタグで
<FORM NAME="FormName" ACTION="next.html">
<INPUT TYPE="button" VALUE="next" NAME="button1" onClick="return func();submit();">
</FORM>
と記述しています。
要は、ボタンを押下した際にfunc関数がtrueを返せば、next.htmlに
遷移させたいのですが、上記記述では、遷移しません・・・
onClick部分にonClick="return func(),submit();"と記述した場合、
func関数の実行結果がtrueでもfalseでも遷移してしまいます。
そこで、なんとなくonClick="return func()&&submit();"と記述してみたところ、
func関数がtrueの時のみうまく遷移するようになりました。

これは偶然そう動作しているのでしょうか、それとも上記は正しい記述方法なのでしょうか?
正しい記述方法ならいいのですが、上記以外に正式な記述方法があれば
教えていただけないでしょうか?

※TYPE="submit"にすればいいとは思うのですが、buttonで実現したいと
考えております。

JavaScriptで、
function func() {
 if (a==0) {
  alert("処理しない");
  return false;
 }
 return true;
}
と、a=0ならfalseを返し、それ以外ならtrueを返す関数を定義しています。

そして、FORMタグで
<FORM NAME="FormName" ACTION="next.html">
<INPUT TYPE="button" VALUE="next" NAME="button1" onClick="return func();submit();">
</FORM>
と記述しています。
要は、ボタンを押下した際にfunc関数がtrueを返せば、next.htmlに
遷移させたいのですが、上記記述では、遷移しませ...続きを読む

Aベストアンサー

3つのパターンをみる限り、理由は以下の通りと思います。
1.セミコロン(;)で区切った場合、
この場合、「return func();」と「submit();」とは別の文です。returnはその時点の値を戻して、それ以降の動作を打ち切ってしまいます。よって、onClickイベントはfuncメソッドの戻り値(true/false関係なく)を戻して、そこで終了、それ以降のsubmitは実行しないとなります。

2.カンマ(,)で区切った場合、
この場合、「return func(),submit();」が1つの文となります。この「,」は、左右の式を評価して、右式を結果とする演算子です。よって、funcメソッド、submitメソッド両方を評価するため、funcメソッドの戻り値に関係なく、submitされます。

3.&&で区切った場合、
論理演算子「&&」は、左右ともにtrue(0以外)の場合のみtrueとする演算子です。また、2項論理演算子は左式から評価し、左式だけで全体の結果がわかる場合、右式を評価しません。よって、funcメソッドがfalseを戻した場合、その時点でsubmitを評価しなくても演算結果は必ずfalseとなるのでそこで打ち切られ、trueを戻した場合、submitを評価しないと演算結果を得られないため、遷移したわけです。「&&」を「||(論理和)」に変更すると逆の結果得たと思います。

さて、では3の「&&」が正しいかと言われたら、文法上は正しいです。ただし、他人がみてわかるとは思えません。
そこで、以下の記述はいかがでしょう。読んでみてソースを理解できますか。


<FORM NAME="FormName" ACTION="next.html">
<INPUT TYPE="button" VALUE="next" NAME="button1" onClick="func()">
</FORM>

(中略)

// funcの定義
function func() {
 if (a==0) {
  alert("処理しない");
  return ;
 }
 document.FormName.submit();
}

要は、ボタンを押されたら、funcを呼び出せ。
funcでは、aが0ならば、そこで終了しろ。
そうでなければ、documentオブジェクト内のFormNameと言う名前のオブジェクトのsubmitメソッドを呼べ。
です。

3つのパターンをみる限り、理由は以下の通りと思います。
1.セミコロン(;)で区切った場合、
この場合、「return func();」と「submit();」とは別の文です。returnはその時点の値を戻して、それ以降の動作を打ち切ってしまいます。よって、onClickイベントはfuncメソッドの戻り値(true/false関係なく)を戻して、そこで終了、それ以降のsubmitは実行しないとなります。

2.カンマ(,)で区切った場合、
この場合、「return func(),submit();」が1つの文となります。この「,」は、左右の式を評価して、右...続きを読む

QJSPによる画面間のパラメータの受け渡しについて

JSPで、データが一覧表示されたフォームから、個々のデータの修正を行うプログラムを作成しています。そこで、一覧表示画面から、選択したデータの修正用の画面に遷移する際、パラメータが渡らずに、NULLでエラーとなってしまいます。
一覧表示部分のソースは以下のようになっています。
-------------------------------------
<TABLE CLASS = "noborder" width = "70%">
・・・
<%
while (rs.next()){
%>

<TR>
<TD>
<a href = "dai_update.jsp?cat_id=" + cat_id>修正</a>
<input type="hidden" name = "cat_id" value = "<%= ("cat_id") %>">
</TD>
<%
}
%>

</TABLE>
-------------------------------------
修正フォームのパラメータの受け取り部分のソースは以下のようになっています。
-------------------------------------
<%
Statement stmt = conn.createStatement();
String sql = "select cat_id, cat_name from quest_cat " +
"where cat_id ="+ request.getParameter("cat_id");
ResultSet rs = stmt.executeQuery(sql);

%>
-------------------------------------
お知恵を拝借できればと思います。よろしくお願いします。

JSPで、データが一覧表示されたフォームから、個々のデータの修正を行うプログラムを作成しています。そこで、一覧表示画面から、選択したデータの修正用の画面に遷移する際、パラメータが渡らずに、NULLでエラーとなってしまいます。
一覧表示部分のソースは以下のようになっています。
-------------------------------------
<TABLE CLASS = "noborder" width = "70%">
・・・
<%
while (rs.next()){
%>

<TR>
<TD>
<a href = "dai_update.jsp?cat_id=" + ...続きを読む

Aベストアンサー

ぱっと見て動かないことはないと思うのですが、
どうやって「パラメータが渡らずに、NULLでエラーとなってしまいます。」
と判断したのでしょう?

request.getParameter("cat_id");

で取得される値が本当にnullになっているのでしょうか?
それとは無関係にDB接続などでエラーになっているのではないですよね。
エラーの内容を表示してくれますか?

それと、気になるのは修正画面に遷移するときには、
<a href = "dai_update.jsp?cat_id=" + cat_id>修正</a>
のリンクをクリックするのですよね?

たぶん省略しているのだと思いますが、cat_idには値をセットしていますか?
もうひとつ、
<input type="hidden" name = "cat_id" value = "<%= ("cat_id") %>">
このhidden部分はなにに使われるんでしょうか?
リンクをクリックするのでしたら、hiddenは使用されないし、
そもそも固定で"cat_id"という文字列が入ると思うのですが。

一覧表示画面をブラウザで表示したときに、ブラウザの機能で、
「ソースを表示」を使って、自分の意図したHTML出力になっているか
確認してみるといいですよ。

ぱっと見て動かないことはないと思うのですが、
どうやって「パラメータが渡らずに、NULLでエラーとなってしまいます。」
と判断したのでしょう?

request.getParameter("cat_id");

で取得される値が本当にnullになっているのでしょうか?
それとは無関係にDB接続などでエラーになっているのではないですよね。
エラーの内容を表示してくれますか?

それと、気になるのは修正画面に遷移するときには、
<a href = "dai_update.jsp?cat_id=" + cat_id>修正</a>
のリンクをクリックするのですよね?
...続きを読む

QstrutsでArrayListの中の配列の表示の仕方。

タイトルどおりなんですが。よくわかりません。例えば以下のようです。numberに紐づいた複数のデータが配列に入っています。

public static Bean setBean (int number, String[] strArray){

bean.setNumber(number);
bean.setArray(strArray);


return bean;
}

たいぶ、はしょってますがこんな感じでbeanにintのnumberとStringの配列をsetして、受け取り側でそのbeanをArrayList(array)にaddしています。それをjspで表示したいのです。jspは下のようです。

<logic:iterate name="form" property="array" id="list" >

<bean:write name="list" property="number">

ここにstrArrayを表示したい。

</logic:iterate> 
といった具合です。どお書けばいいんでしょうか?ご教授お願いします。

タイトルどおりなんですが。よくわかりません。例えば以下のようです。numberに紐づいた複数のデータが配列に入っています。

public static Bean setBean (int number, String[] strArray){

bean.setNumber(number);
bean.setArray(strArray);


return bean;
}

たいぶ、はしょってますがこんな感じでbeanにintのnumberとStringの配列をsetして、受け取り側でそのbeanをArrayList(array)にaddしています。それをjspで表示したいのです。jspは下のようです。

<logic:iterate name="form" propert...続きを読む

Aベストアンサー

>ArrayListにbeanをsetしています。
ArrayListにbeanをセットしてあって、
beanにString配列をセットして、
beanで持ってるArrayListにString配列をセットしてある。

ってことでいいんですか?
複雑ですね。

ActionからJSPにはどうやって渡してますか?

で、先の参考URLは読みました?

参考URL:http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=21965&forum=12

QOracle(オラクル)で、日付時刻型の検索方法について

質問させていただきます。
データベースはオラクルを使っていて、
SQL文で、抽出するときにエラーが出て困っています。

日付時刻型が「2005/05/26 19:13:00」という感じで入ってます。
2005/05/26 を抽出したいのですが、
BETWEEN '2005/05/26 00:00:00' AND '2005/05/26 23:59:59'

だと、エラーでできません。
どなた様か、ご教授よろしくお願いしますm(_ _)m

Aベストアンサー

日付検索を行う場合は、以下のように書式を含める必要があります。

col BETWEEN TO_DATE('2005/05/26 00:00:00','YYYY/MM/DD HH24:MI:SS') AND TO_DATE('2005/05/26 23:59:59','YYYY/MM/DD HH24:MI:SS')

ただ、厳密には

col >= TO_DATE('2005/05/26', 'YYYY/MM/DD')
AND
col < TO_DATE('2005/05/27', 'YYYY/MM/DD')

と書くべきでしょうね。

QSQL、2つのテーブルで条件一致したものだけdeleteする方法は?

オラクルSQLで質問です

やりたいことは、
テーブルAから以下の条件に該当するデータを削除する。
基本的にはテーブルBの内容と比較して、一致したもの。

条件(全ての条件を満たすこと)
 テーブルA.AAA = テーブルB.AAA
 テーブルA.BBB = テーブルB.BBB
 テーブルB.CCC > 0


調べたところ、SQLサーバでは以下のように
from を2つ書いて実現できるようです。
が、今回はオラクルなので文法エラーになります。

delete FROM テーブルA FROM テーブルB
where
テーブルA.AAA = テーブルB.AAA
AND
テーブルA.BBB = テーブルB.BBB
AND
テーブルA.CCC > 0
;
commit;


よろしくお願いします

Aベストアンサー

delete 文の細かい構文はちょっと覚えてませんが
サブクエリ使えばいいんじゃないですか

delete from table_a
where 主キーカラム = (
select table_a.主キーカラム
from table_a, table_b
where
指定の条件
)


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング