マンガでよめる痔のこと・薬のこと

javaでuseBeanエラーの解決方法

レンタールサーバーを経営しており、javaを使ってショッピングカートを動かしているお客様からエラー解除してほしいという依頼を受けました。
該当するサイトのショッピングページで「購入」ボタンを押すと
Error:org.apache.jasper.JasperException: /(ユーザー名)/Casher.jsp(2,0) The value for the useBean class attribute Cart is invalid.
と表示されます。
お客様曰く、java側に問題はないので、管理側でどこかのパーミッションを書き込み可能なものへ変更すればいい、ということでしたが、javaの知識は一切ないためホームディレクトリの上から順に、片っ端にパーミッション変更をして試していますが、ファイル/フォルダの量が膨大すぎて解決に時間がかかりすぎてしまいます。
お客様もどのファイル/フォルダのパーミッションを変えればいいのか?パーミッションをどんな内容に変えたらいいのか知らないそうです。

インターネット上でしらみつぶしに調べましたが解決方法は一切見つけられませんでした。
(同じ質問内容を別の掲示板で質問している人を見つけましたが、誰も回答してませんでした)

いったいどのファイルのパーミッションを変えればいいのでしょうか?
javaの知識が一切ないため、おおよその見当すらつきません。

「もしかしたら」というような些細な情報でも構いませんので教えてください。
お願いします!

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

A 回答 (4件)

・bean(フォルダ)の下に


「Cart.class」「Cart.java」がありました。

Cart.java

package bean;
の記述があれば

<jsp:useBean id="product" scope="session" class="bean.Cart" />
こうね。
    • good
    • 0
この回答へのお礼

askaaska様、ありがとうございます!!!!
解決しました!!!!
もう本当にありがとうございます!解決できてすごく嬉しいです。

classの値に「bean」を付けるか付けないかで、こんなにも違うのですね!
今回のことはすごく勉強になりました!

的確なアドバイス本当にありがとうございます!
すごく感謝します!!!

お礼日時:2010/06/29 18:08

>Casher.jspの中にある記述はこうです。


><jsp:useBean id="product" scope="session" class="Cart" />
>
>/web/WEB-INF/classesの中にはaskaaskaさんが指摘してくださったCart.classはありませんでした。
>代わりにclassesフォルダの中は
>・bean(フォルダ)
>・ShopKeeper.class
>・ShopKeeper.java

んー
そのbeanより下にCart.classがあったりしないかしら?

この回答への補足

askaaskaさん、何度も回答してくださってありがとうございます。

>そのbeanより下にCart.classがあったりしないかしら?
ありました。

・bean(フォルダ)の下に
「Cart.class」「Cart.java」がありました。

ではこの場合、Casher.jspの中の記述は
<jsp:useBean id="product" scope="session" class="Cart" />
のままで正しいということでしょうか?
記述が間違っているなら、どのように記述すると正しく動くか分かりますか?

補足日時:2010/06/28 13:41
    • good
    • 0

Java側に問題がない


という相手の主張を信じたら負けよ。
そこもきちんと疑わないとね。

Casher.jspを作ったのが誰だか知らないけど
その2行目がおそらく
<jsp:useBean id="cart" class="Cart" scope="session" />
こんな感じで書かれているのよね。
~/WEB-INF/classes/Cart.classが存在しているのかしら?
もしもCart.classがパッケージに属していて
~/WEB-INF/classes/shopping/Cart.class
(package shopping;という実装がCart.javaにある)
<jsp:useBean id="cart" class="shopping.Cart" scope="session" />
こうなるはずよ。

この回答への補足

早い回答ありがとうございます!
以前同じ現象になった時、サーバー管理側(私達)でパーミッションを変更したら解決したことがあったためお客様は「こちらに負は一切ない!」と豪語されています。
でも2009年9月にサーバーを移動しており、Tomcatバージョン3.2.3からバージョン5.0.28に変わりました。(以前起こった時はバージョン3.2.3での話です)
JSP のバージョンも変わっているのでコンパイルに可否が出ているのでは?と問いかけましたが「そんな環境には一切左右されないものだから」ということでした。
javaの知識が無いので「あ、そうなんですか」と2つ返事してしまいましたが・・・(笑)
でも仰るとおり、原因を色々な視点で考えるべきですね!

Casher.jspの中にある記述はこうです。
<jsp:useBean id="product" scope="session" class="Cart" />

/web/WEB-INF/classesの中にはaskaaskaさんが指摘してくださったCart.classはありませんでした。
代わりにclassesフォルダの中は
・bean(フォルダ)
・ShopKeeper.class
・ShopKeeper.java
が入っています。

この場合Casher.jsp内の記述はどうしたら良いのでしょう?
(お客様からは、ファイル内を変更する許可はいただいています)

補足日時:2010/06/25 22:21
    • good
    • 0

一番確実で早そうな解決方法は、たぶんそのショッピングカートの開発元に問い合わせ、ですね。

。。

エラー内容を見る限りはパーミッションが原因の可能性は低そうな気がします。(遠因である可能性はあるかもですが
軽くぐぐってみましたが、考えられるのはこんなところでしょうか。

-----------------------------------------------
・Tomcatがそのクラスを読み込めていない
 ⇒配置すべきファイルに不足はありませんか?

・参照クラスがデフォルトパッケージに配置されていると使えない
 ⇒これはもうプログラム側の問題です。
-----------------------------------------------

その他、どうしてもよくわからなくなったときは、
一度すべて消して、もう一度手順見ながら再インストールする、とかも良いかもしれません。
(お客様のコンテンツに勝手にそんなことしていいのか、って問題はおいといて)


なお、大量ファイルのパーミッションを変更するのであれば、shell上で、
chmod -R 666(とか) hoge
のように指定すれば、hoge ディレクトリ配下すべてのパーミッションが666になります。

参考URL:http://www.google.co.jp/search?q=The+value+for+t …

この回答への補足

早い回答ありがとうございます!
開発元がどこなのか、ちょっと把握できませんね~。
問い合わせるならお客様にお願いすることになりますが、問い合わせて頂くようお願いしたことはありますが「パーミッションを変更すれば・・・」の返事のみとなりましたので、現在までその線で動いてました。

>Tomcatがそのクラスを読み込めていない
> ⇒配置すべきファイルに不足はありませんか?
すいません、クラスとは何でしょうか?
元々Tomcatはすでに用意されていましたのでTomcatのデータを置いている場所に問題はないと思います。
ただ、今回のエラーの前にショッピングカートで[購入]を押すとHTTP400エラーが表示されたことがあり、サーブレットを実行するようになっていない原因によりweb.xml内のservletとservlet-mappingのコメントアウトを外した経緯があります。
web.xml内で必要なものがまだコメントアウトされている可能性があるってことでしょうか???

>・参照クラスがデフォルトパッケージに配置されていると使えない
> ⇒これはもうプログラム側の問題です。
んー・・・これもすいません、よく分かりません。
参照クラスってどんなファイルなのでしょう?
デフォルトパッケージってどこにあるのでしょう?
Casher.jspの中が
<jsp:useBean id="product" scope="session" class="Cart" />
となっていますが、クラスってclass="Cart"のことでしょうか? (参照クラスって"Cart"?)

>その他、どうしてもよくわからなくなったときは、
>一度すべて消して、もう一度手順見ながら再インストールする、とかも良いかもしれません。
これはちょっと怖いですね。最終手段としておいておきます。

パーミッション変更方法として「-R」を提案してくださいましたが、フォルダ内のファイルの元のパーミッションが同じではないので、一緒くたにパーミッション変更してしまうと、元に戻す時に元がどうであったか分からなくなるので、あえて1つ1つのファイルを変えています。
1つのファイルを変えてカートの動きチェックして元に戻し、次のファイルを1つパーミッション変えてカートの動きチェックして元に戻し・・・の繰り返しですねぇ。

変更を試みているパーミッションは「755」「700」「777」を主にしているのですけど、パーミッション変更してみるなら「666」が良いのでしょうか?

補足日時:2010/06/25 22:37
    • good
    • 0

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

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

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

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

Qservletからjspへオブジェクトの配列情報を送る方法

いつもお世話になっております。echo2002です。

さて、今回は以下のような処理を行いたいのですが、可能なのでしょうか?
”servletで作成したオブジェクトの配列をjspにforwardして表示させる”

こんなような処理を考えています。

構成:FileListServletクラス, FileInfomationクラス, disp.jsp

FileInfomationクラスではファイル名やファイルサイズなどの情報を持ち、
それぞれgetなどのアクセサメソッドを持つとします。

FileListServletクラスでの処理
FileInfomationクラスの配列を作成し、各情報をsetする。
HttpServletRequestにsetAttributeでFileInfomation情報を付加し、
disp.jspへforwardする。

※以下の方法を考えています。
request.setAttribute("fileinfo1", fileinfo[0]);
request.setAttribute("fileinfo2", fileinfo[1]);
request.setAttribute("fileinfo3", fileinfo[2]);
・・・
(配列でsetAttributeできるのかわからなかったので、
 とにかくファイルの数分setAttributeしてみました)

getServletContext().getRequestDispatcher("/disp.jsp").forward(req, res)

わからないこと:
disp.jspでどのようにFileInfomationの情報を取得し、
内容を参照できるのかがよくわからないのです。
jspの暗黙オブジェクトrequestを使用して、request.getParameterをすると、
返ってくる値がStringのようなので、FileInfomationクラスにならないんですよね?

突っ込みどころ満載の質問かと思いますが、何かアドバイス頂ければと思います。
オブジェクトの配列をsetAttributeしてjspで読み出せる方法があれば、
それもご教授いただけますでしょうか。
よろしくお願いいたします。jsp難しいです・・・。

いつもお世話になっております。echo2002です。

さて、今回は以下のような処理を行いたいのですが、可能なのでしょうか?
”servletで作成したオブジェクトの配列をjspにforwardして表示させる”

こんなような処理を考えています。

構成:FileListServletクラス, FileInfomationクラス, disp.jsp

FileInfomationクラスではファイル名やファイルサイズなどの情報を持ち、
それぞれgetなどのアクセサメソッドを持つとします。

FileListServletクラスでの処理
FileInfomationクラスの配列を作成し、...続きを読む

Aベストアンサー

setなんちゃらメソッドで値を設定したら、getなんちゃらメソッドを呼べば良かったのです。つまり、set/get以下が同名のメソッド同士をセットで使えば良いのです。
今回の場合は、getAttributeメソッドですね。
戻り値はObjectですがこれはキャストすれば良いのです。
FileInfomation 変数 = (FileInfomation)request.getAttribute("fileinfo1");
てな具合です。

なお、getParameterメソッドは、クライアント(ブラウザ)から送信されたパラメータを取得するメソッドです。

さて、話を次の段階に進めて、配列を受け渡しできるか?となりますが、、できます。
サーブレット側で、
request.setAttribute("キー文字列", fileinfo);
として、JSP側で、
FileInfomation[] 変数 = (FileInfomation[])request.getAttribute("キー文字列");
とすれば、良いのです。

Q日付型カラムへのデータINSERT

お世話になります。ひとつご教授ください。

オラクル10g, ojdbc14でjdk1.4.2から接続です。

INSERT命令を使ってテーブルにレコードを追加する際に、DATE型のカラムに対して

INSERT TABLE_A (DATE1, ...) VALUES ('2006-4-27 12:00:00', ...);

を実行するとエラーORA-01861が出ます。そこで

INSERT TABLE_A (DATE1, ...) VALUES ('2006-4-27', ...);

このように記述して再度実行すると通ります。

このようなとき、時間の部分まで設定した値をカラムに格納したいときはどうしたらよろしいでしょうか?

よろしくお願いします。

Aベストアンサー

ごめんなさい。
説明と文例が違ってしまいました。
正しくはこちらです。

INSERT TABLE_A (DATE1, ...) VALUES (to_date('2006-4-27 12:00:00','yyyy/mm/dd hh24:mi:ss'), ...);
というように、to_date関数を使うのが一般的かと思います。

QJava-jspの画面入力値保持について

画面にテキスト、ラジオボタン、リストボックス とボタンがあります。
ボタンを押すと、JAVAで処理を行い、jspのviewで表示します。

1.テキスト、ラジオボタン、リストボックスなどに値が入力、設定されている状態で
ボタンを押して処理後にテキスト、ラジオボタン、リストボックスの値が
変わらないようにしたいのですが、
その場合、たとえば、入力、設定値をセッションになどに格納しておき
jspの所で、セッションから値を設定すると言うような方法になるのでしょうか?

2.ボタン押して処理後、ラジオボタン、リストボックスの選択値も
  変えないようにしたいのですが、
  これはどのように実現するのが、適切なのでしょうか?


以上、よろしくお願いします。

Aベストアンサー

ボタンというのはフォームのサブミットボタンのことですよ?
つまり、画面遷移が起きることを前提とすると(元の同じ画面に戻るのも含みます)

テキスト、ラジオボタン、リストボックスの状態を「要求パラメータ」として
送信し、それを次画面に反映するというのが最も一般的な方法です。

フレームワーク struts のアクションフォーム&JSPカスタムタグを使うと比較的楽に
そういう画面が作れますが、多くのフレームワークでも大差ありません。
簡単な画面なら素のサーブレート+JSPでも十分作れます。

セッションでもできますが、 セッションはログイン情報などの保持など、
限定された範囲で使うのが普通です。また、結局セッションに最新の
テキスト、ラジオボタン、リストボックスの状態を送るには、「要求パラメータ」
を送信する必要があります。

AJAXを使うという方法もあります。この場合、ボタンは AJAX 処理だけを行い
画面遷移を起こさないので、サーバ側で画面のテキスト、ラジオボタン、
リストボックスの状態をもつ必要はありません。

Qフォーム上で押されたボタンによってサーブレットの処理を変えたい

Urizakaです。
さて、さっそく質問です。
JSPの同一フォーム上に「登録」「修正」「削除」のボタンを置き、その押された
ボタンによってサーブレット内での処理が切り替わる(具体的には、違う
SQL文を実行し、違うJSPページをgetRequestDispatcherメソッドで生成
する)ようにしたいのですが、どのようにすればよいのでしょうか?
もちろんそれぞれの処理に対して別々のサーブレットを作り、javaScript
でそれぞれのサーブレットへ飛ぶように制御するという処理も考えたことは
考えたのですが、できれば一つのサーブレットで済ませたいと考えたもので
…宜しくお願いします。

Aベストアンサー

お恥ずかしい限りです。
前述の例、動くわけがありませんね(汗)

2つめの例、書きなおします。

---------------------------------------------------

■JSPのフォーム

<form name=MyForm action="<<サーブレットのURL>>" method=post>
<input type=button name=MyClick value=登録 onClick="func('Toroku');">
<input type=button name=MyClick value=修正 onClick="func('Shusei');">
<input type=button name=MyClick value=削除 onClick="func('Sakujo');">
<input type=hidden name=MySubmit>
</form>

<script language="JavaScript">
function func(MyCommand){
document.MyForm.MySubmit.value=MyCommand;
document.MyForm.submit();
}
</script>

■Servletでの処理
// リクエストの取得
String MyAction = req.getParameter("MySubmit");

// 処理の実行
if (MyAction.equals("Toroku")){...}
if (MyAction.equals("Shusei")){...}
if (MyAction.equals("Sakujo")){...}



---------------------------------------------------

こんな感じでどうでしょうか。
ちなみにこうやって書いておくと、フォームのボタンからじゃなくても
アンカーをクリックすることで同じ効果が出せそうな……

<a href="JavaScript:func('Toroku')">登録</a>

あ、でもまたボロが出そうなのでこの辺で(^_^;)

お恥ずかしい限りです。
前述の例、動くわけがありませんね(汗)

2つめの例、書きなおします。

---------------------------------------------------

■JSPのフォーム

<form name=MyForm action="<<サーブレットのURL>>" method=post>
<input type=button name=MyClick value=登録 onClick="func('Toroku');">
<input type=button name=MyClick value=修正 onClick="func('Shusei');">
<input type=button name=MyClick value=削除 onClick="func('Sakujo');">
<input type=hidden name=M...続きを読む

QJSPの処理の途中で、JavaScriptの処理をしたい

プログラムをJSPで記述している(<% %>タグ)のですが、
JavaScriptのalertやconfirmなどのポップアップするダイアログを
表示したいのです。それは可能なのでしょうか?

Aベストアンサー

No.2の回答に対する回答(変な日本語ですが)です。

JSPとJavaScriptの処理の行われる順番について考えていないと
エラーになることがありますよ。
大まかな流れは、
 JSPのソースをサーバ側で解釈、実行する(HTMLのソースを吐き出す)
  ↓
 クライアントに生成したソースを送信する
  ↓
 クライアント側のブラウザがソースを解釈する
  ↓
 ソースの中のJavaScriptを、ソースの上のほうから順次実行する
  ↓
 同時に、通常の表示(HTMLの解釈)も実行される

 と、こういう流れですので、例えば、JavaScriptで値を入力し、
JSPでその値を使おうとすると、エラーとなります。

 具体的にやりたいこと(やろうとしていること)を書いていただいたほうが
適切に回答できますが、上記が今考えられるエラーの原因です。

QJSP jsp:usebean で総称型クラスを使うには

お世話になります。

JSPでプログラムを書いています。
そこでjsp:usebeanを使っているのですが、そのクラスに以下のように総称型クラスを使用したいのです。

> <%@page import="java.util.Vector"%>
> <jsp:useBean id="vec" scope="application" class="java.util.Vector<String>"/>

で、warファイルまではできるのですが、実行するとブラウザ上に以下のようなエラーが表示されます。

> org.apache.jasper.JasperException: /index.jsp(4,0) useBeanのクラス属性 java.util.Vector<String> の値が無効です
> org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
> org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
> org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:148)
> org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1178)

JSPのbeanには総称型クラスを使うことができないのでしょうか。

環境は以下の通りです。
サーバー:Tomcat 5.5.27
jdk: 1.6.0_07

特別なコンパイルオプションなどは指定していません。

よろしくお願いいたします。

お世話になります。

JSPでプログラムを書いています。
そこでjsp:usebeanを使っているのですが、そのクラスに以下のように総称型クラスを使用したいのです。

> <%@page import="java.util.Vector"%>
> <jsp:useBean id="vec" scope="application" class="java.util.Vector<String>"/>

で、warファイルまではできるのですが、実行するとブラウザ上に以下のようなエラーが表示されます。

> org.apache.jasper.JasperException: /index.jsp(4,0) useBeanのクラス属性 java.util.Vector<String> の値が...続きを読む

Aベストアンサー

class属性でなくtype属性にするといいらしい。

QJSPからクラス(サーブレット)を呼び出す方法

JSPからクラス(サーブレット)を呼び出そうとしてるんですが
以下のエラーになってしまいます。
The requested resource (/Hello) is not available.

ネットで調べてみたら、パスの指定の仕方が悪いんじゃないかって感じがするので
色々パスを弄ってみましたが、ずっとavailableになります。
わかる方いらっしゃったらアドバイスよろしくお願いします。

※usebeanはこのエラーの前の段階で、getとset両方動くのを確認しています。
※「http://localhost:8080/javaroad/Hello」を直接WEBブラウザのURLに入れたら動きました。

【フォルダ構成 (Tomcat 6.0\webappsの直下) 】

javaroad
---------- index.jsp
---------- WEB-INF
-------------------- web.xml
-------------------- classes
---------------------------- HelloServlet.class

【index.jsp】
<%@ page contentType="text/html;charset=Shift_JIS" %>
<jsp:useBean id="GSBean" class="Testaaa.GetSetBean" />
<html>
<head>
<title>Hello World!</title>
</head>
<body>
<form method="post" action="/Hello">
<input type="text" name="name1" maxlength="10" style="ime-mode: disabled">
<jsp:setProperty name="GSBean" property="userID" param="name1" />
<br><br>
<input type="submit" value="submit">
</form>
</body>
</html>

【web.xml】
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app 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"
version="2.4">

<servlet>
<servlet-name>Hello</servlet-name>
<servlet-class>HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Hello</servlet-name>
<url-pattern>/Hello</url-pattern>
</servlet-mapping>

</web-app>

【HelloServlet.class】
import java.io.*;
import java.text.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class HelloServlet extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {

response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<HTML>");
out.println("<BODY>");
out.println(new java.util.Date());
out.println("</BODY>");
out.println("</HTML>");
}

以下試して駄目だったパスの一覧です。
<form method="post" action="Hello">
<form method="post" action="/Hello">
<form method="post" action="../servlet/Hello">
<form method="post" action="HelloServlet">
<form method="post" action="/HelloServlet">
<form method="post" action="../servlet/HelloServlet">
<form method="post" action="WEB-INF\classes/HelloServlet">
<form method="post" action="http://localhost:8080/javaroad/Hello">

JSPからクラス(サーブレット)を呼び出そうとしてるんですが
以下のエラーになってしまいます。
The requested resource (/Hello) is not available.

ネットで調べてみたら、パスの指定の仕方が悪いんじゃないかって感じがするので
色々パスを弄ってみましたが、ずっとavailableになります。
わかる方いらっしゃったらアドバイスよろしくお願いします。

※usebeanはこのエラーの前の段階で、getとset両方動くのを確認しています。
※「http://localhost:8080/javaroad/Hello」を直接WEBブラウザのURLに入れたら動...続きを読む

Aベストアンサー

<form method="get" action="Hello">

ではないでしょうか。

Q文字列を日付に変換でParseException

文字列を日付に変換するところで、「ParseException: Unparseable date: "2013/08/06" 
 at java.text.DateFormat.parse(DateFormat.java:335) 」とエラー表示されました。

実際のコーディングは
Date sgndate = new Date();
if(!StringUtil.isNull(rs.getString("sgnymd"))){
String lstdaysgn = rs.getString("sgnymd");
lstdaysgn = lstdaysgn.substring(0,4) + "/" + lstdaysgn.substring(5,7) + "/" +
                              lstdaysgn.substring(8,10);
sgndate = DateFormat.getDateInstance().parse(lstdaysgn); ・・・・・・・・・ここでエラー発生
}

どこが悪いのか解りません。
よろしくご教授ください。

文字列を日付に変換するところで、「ParseException: Unparseable date: "2013/08/06" 
 at java.text.DateFormat.parse(DateFormat.java:335) 」とエラー表示されました。

実際のコーディングは
Date sgndate = new Date();
if(!StringUtil.isNull(rs.getString("sgnymd"))){
String lstdaysgn = rs.getString("sgnymd");
lstdaysgn = lstdaysgn.substring(0,4) + "/" + lstdaysgn.substring(5,7) + "/" +
                              lstdaysgn.substring(...続きを読む

Aベストアンサー

どこが悪いって
DateFormat.getDateInstance().parse(lstdaysgn);
が悪い。実際エラーはそこで起こってるんだし。で、そこの部分について手直しよりも一つ提案があるので聞いてみてくれたまい。

仮にrsがデータベースからSELECT文でデータを取ってきた時のレコードセットであり、かつrs.getString("sgnymd")がyyyyMMdd形式の(スラッシュが付かない)8桁の数字文字列であり、かつ単純にその日付でDate型にしたいだけなのであればこうしたらいいんじゃないか。

Date sgndate = null; // new Date()しない。もちろん後続のルーチンでnullチェックは要るようになる。
if(!StringUtil.isNull(rs.getString("sgnymd"))){
String lstdaysgn = rs.getString("sgnymd");
// ↓これもしない。
// lstdaysgn = lstdaysgn.substring(0,4) + "/" + lstdaysgn.substring(5,7) + "/" +
//                              lstdaysgn.substring(8,10);
sgndate = new SimpleDateFormat("yyyyMMdd").parse(lstdaysgn); // スラッシュつけずに8桁のyyyyMMddでそのままDateにする。
}

以上の手直しにより、このルーチンを通る際にDate 1つとString 7つ、インスタンスの生成を回避する事ができる。これがループで処理されるならなおさら。
仮に、「new SimpleDateFormat("yyyyMMdd")だとパースのたびにSimpleDateFormatのインスタンスが作られちゃうジャン!」と思うならルーチン化していいと思うけど、その場合はスレッドセーフなルーチンにしないといけないのでそこらへん注意の事。

どこが悪いって
DateFormat.getDateInstance().parse(lstdaysgn);
が悪い。実際エラーはそこで起こってるんだし。で、そこの部分について手直しよりも一つ提案があるので聞いてみてくれたまい。

仮にrsがデータベースからSELECT文でデータを取ってきた時のレコードセットであり、かつrs.getString("sgnymd")がyyyyMMdd形式の(スラッシュが付かない)8桁の数字文字列であり、かつ単純にその日付でDate型にしたいだけなのであればこうしたらいいんじゃないか。

Date sgndate = null; // new Date()しない。もちろ...続きを読む

Qリクエストに応じたselectedの初期値設定方法

リクエストに応じたOPTIONをselectedの初期値にする方法を教えて下さい。

java servletからjspを表示する際に、
setAttributeした値に応じてプルダウンの初期値に設定するにはどうしたら良いですか?

以下の様にDetail.jspに移動する前に、NOをセットしています。
普通に実行したら、YESで表示されてしまいます。
jsp側で何かを追記すれば良いと思うのですが、全然わかりません。。。

例)
[[[[[ShowDetail.java]]]]]
request.setAttribute("JAPAN", "NO");
request.getRequestDispatcher("/Detail.jsp")
.forward(request, response);

[[[[Detail.jsp]]]]
<form name="Japan">
<table border="1">
<tr>
<th>Japan</th>
<td>
<select name="Japan" id="Japan" >
<option value="YES">YES</option>
<option value="NO">NO</option>
<option value="KNOW">DON'T KNOW</option>
</select>
</td>
</tr>
</table>
</form>

リクエストに応じたOPTIONをselectedの初期値にする方法を教えて下さい。

java servletからjspを表示する際に、
setAttributeした値に応じてプルダウンの初期値に設定するにはどうしたら良いですか?

以下の様にDetail.jspに移動する前に、NOをセットしています。
普通に実行したら、YESで表示されてしまいます。
jsp側で何かを追記すれば良いと思うのですが、全然わかりません。。。

例)
[[[[[ShowDetail.java]]]]]
request.setAttribute("JAPAN", "NO");
request.getRequestDispatcher("/Detail.jsp")
.f...続きを読む

Aベストアンサー

こんにちは。

>普通に実行したら、YESで表示されてしまいます。
>jsp側で何かを追記すれば良いと思うのですが、全然わかりません。。。

あと、カテゴリがJavaScriptではなくJavaですね。

順に考えてみませんか。初期値を設定するには何が必要でしょうか。
今は何もしていないから一番上のYESが表示されています。
<option value="NO" selected="selected">とする必要がありますよね。
そうしたらそれを出力するようにJSPを記述すればいいわけです。

フレームワークを何も利用していなければ以下のようになると思います。

<%
// 例だとjapanにNOが入っている
String japan = (String)request.getAttribute ( "JAPAN" );
%>

<select>
<option value="YES"<%= "YES".equals(japan) ? " selected=\"selected\"" : ""; %>>YES</option>
<option value="NO"<%= "NO".equals(japan) ? " selected=\"selected\"" : ""; %>>NO</option>
<option value="KNOW"<%= "KNOW".equals(japan) ? " selected=\"selected\"" : ""; %>>KNOW</option>
</select>

各optionでどの文字列が入っているかによってselected="selected"を出力すれば良いです。

<%= "YES".equals(japan) ? " selected=\"selected\"" : ""; %>

上の記述は

if ( "YES".equals(japan) ) {
out.write ( " selected=\"selected\"");
} else {
out.write ( "" );
}
と同義です。
ようするにjapanにYESが入ってきたらselected="selected"を出力することにより初期選択項目とする。
NOが入ってくれば"YES".equals(japan)には該当しないので無出力、次の"NO".equals(japan)で該当するのでNOの<option>が初期値となります。

こんにちは。

>普通に実行したら、YESで表示されてしまいます。
>jsp側で何かを追記すれば良いと思うのですが、全然わかりません。。。

あと、カテゴリがJavaScriptではなくJavaですね。

順に考えてみませんか。初期値を設定するには何が必要でしょうか。
今は何もしていないから一番上のYESが表示されています。
<option value="NO" selected="selected">とする必要がありますよね。
そうしたらそれを出力するようにJSPを記述すればいいわけです。

フレームワークを何も利用していなければ以下のようになると...続きを読む

QHTMLファイル同士での値渡し

困っています。

HTMLファイルからHTMLファイルへ移動するときに、
HTMLファイル1でJavaScript で算出された値を
HTMLファイル2へ渡して使用したいのです。

showModalDialogだとダイアログにしか渡せないし・・・。
このように、値をそのまま次のページに渡すための方法を教えてください。
お願いします。

Aベストアンサー

すみません。うっかりしてました。

document.write(FORM[v1]);
では、v1を変数と認識してしまうので、エラーになってしまいますね。

document.write(FORM.v1);  // 「FORM.v1」です
あるいは
document.write(FORM["v1"]);
としてください。


人気Q&Aランキング