表示の切り替え



0   名前: あい : 2006/06/21(水) 11:02  ID:OeJpQ92e
最初の画面では「選択」ボタンを表示し、そのボタンを押すと表示が切り替わり、選択したボタンの値(内容)が最初の表示の下の方に一緒に表示されるようにしたいのですが、どうすれば出来ますか?
また、ボタンを押す毎に順次追加されて表示されるようにしたいです。
"submit"で値を同じJSPファイルに送り、それを同じ画面に追加表示させる、と言ったらよいでしょうか。。

1   名前: m035 ◆Wpzr1YKOiq : 2006/06/21(水) 11:02  [URL]  ID:EhKHAf/6
丸投げしすぎです。
いわゆる「教えて君」扱いを受けます。
とりあえず、
・どこまで調べたか
・現状のソース
・何が出来ないのか
・どうしたいのか
を書き込んだほうがよろしいかと思います。
別に完全なソースでなくても良いので、ご自分で作ってみて、動作しないようであればソース(もしくはurl)を書き込んで質問してください。

それと補足して欲しいのですが、
>値(内容)が最初の表示の下の方に一緒に表示されるようにしたい
の「値」とは何ですか?(ex:buttonのvalue,buttonに対応する配列の内容etc.)
また、何に表示するのですか?(ex:textarea,input type="text",特定の要素へinnerHTMLかDOMで追加etc.)

2   名前: あい : 2006/06/21(水) 11:02  ID:OeJpQ92e
"table"を使い表を作成し、商品名と購入のボタンを作り、ボタンを押すとその商品名が表の下部に表示されるようにしたい。
その際に、全ての商品名をJSPソースに書くのではなく、javaPRGの方で設定しておき、それをJSPにおいて一行ずつ繰り返し呼び出して表をつくりたい。

そこで試したのが、
<% %>を<body></body>内で使用してもダメ、ループをかけてから<%= %>で表示すると最終的に保持している値が表示されるのでダメ、<head></head>内にて"javascript"を使用し"function"で関数を作ってその中でループさせ、その関数を<%= %>の中で呼んでもダメ(関数が正しく出来ているかは判断出来ていない)、
です。

現状のソースは、
<%@ page language="java" contentType="text/html; charset=Shift_JIS" %>
<%@ page import="shop.*" %>

<%
String goodCode = "";
String name = "";
Shop shop = new Shop();
goodCode = shop.nextGoodCode();
name = shop.getGoodName(goodCode);
%>

<html>
<head>
<title>Shop</title>
</head>

<body>
<form>
<center>
<h2>商品一覧</h2>
<table border = "2" width = "300">
<thead><tr><th>商品名</th> <th>選択</th></tr></thead>
<tbody align = "center"><tr><td><%= name %></td>
<td><input type = "submit" name = "buy" value = "購入"></td></tr>

</table>

</center>


</form>
</body>
</html>

"table"を増やしたいのです。現段階だと、<% %>内でnameを保持しているので"table"内のnameは一つしか表示されません。goodCodeがあるだけ"table"にnameを追加していき表にしたい。

「値」といったのはname(商品名)の事です。これが表の下部に、順次ボタンを押す毎に追加表示されるようにしたい。

といった感じです。これで分かるでしょうか?

3   名前: 神崎 : 2006/06/21(水) 11:02  ID:Ss45EgCa
「javaPRG」をググって見ましたが、結局何かわかりませんでした。
> 全ての商品名をJSPソースに書くのではなく、javaPRGの方で設定しておき、それをJSPにおいて一行ずつ繰り返し呼び出して表をつくりたい。
この書き方から察するに、MySQLやOracleなどのようなデータベースの一種でしょうか?
とすると、普通にループさせるだけで出来ると思いますが。。。

すみませんがJSPがわからないので、”感じ”だけ書く形になります。

<%
while(name = (javaRPGから1件取得)){
以下を記述 "<tr><td><%= name %></td><td><input type = "submit" name = "buy" value = "購入"></td></tr>"
}
%>


> <%
> String goodCode = "";
> String name = "";
> Shop shop = new Shop();
> goodCode = shop.nextGoodCode();
> name = shop.getGoodName(goodCode);
> %>
または、この部分で、goodCode=shop.nextGoodCode();という部分がありますので、
これを利用すれば、nameを1つずつ順次取り出せるのではないでしょうか?

<%
while(1){
goodCode = shop.nextGoodCode();
name = shop.getGoodName(goodCode);
if( goodCodeかnameに値が入っていなければループ終了 )
以下を記述 "<tr><td><%= name %></td><td><input type = "submit" name = "buy" value = "購入"></td></tr>"
}
%>

JSPでの記述になりますが、JavaScriptではおそらくjavaPRGにアクセス出来ないと思いますので、無理だと思います。

4   名前: あい : 2006/06/21(水) 11:02  ID:OeJpQ92e
ご回答ありがとうございます。

<% %>内において
<%
String goodCode = "";
String name = "";
Shop shop = new Shop();
while (shop.hasMoreGoods) {
goodCode = shop.nextGoodCode();
name = shop.getGoodName(goodCode);
}
%>
のようにして繰り返し呼ぶことは出来るのですが、これだとnameが上書きされてしまい、表示させる時には最終的に保持している値しか表示できないのです。
なので、これを<body>内で行ったらどうかと思い
while (shop.hasMoreGoods) {
goodCode = shop.nextGoodCode();
name = shop.getGoodName(goodCode);
<tbody align = "center"><tr><td><%= name %></td>
<td><input type = "submit" name = "buy" value = "購入"></td></tr>
}
としたらエラーになります。「org.apache.jasper.JasperException: JSPのクラスをコンパイルできません」

どこでどうループをさせたら良いのか、もう皆目見当もつきません。自分でももっと考えはしますが、何卒良いお知恵を。

5   名前: あい : 2006/06/21(水) 11:02  ID:OeJpQ92e
繰り返しについては解決しました。

<%
while (shop.hasMoreGoods()) {
goodCode = shop.nextGoodCode();
name = shop.getGoodName(goodCode);
%>
<tbody align = "center"><tr><td><%= name %></td>
<td><input type = "submit" name = "buy" value = "購入"></td></tr>
<%
}
%>

6   名前: zack : 2006/06/21(水) 11:02  ID:j2Tmlb5G
こんにちは

サーバーサイド(JSP)とクライアントサイド(HTML,JavaScript)の処理を把握すれば解決できそうですね。

HTML質問板のあいさんのスレッドにJAVAのサイトのリンクを張りましたので、そちらで質問されてはどうでしょうか?

一覧へ戻る