- PR -

複数ボタンによる動作の振り分け

1
投稿者投稿内容
TOMMY
会議室デビュー日: 2006/07/15
投稿数: 7
投稿日時: 2006-07-15 15:52
お世話になります。

今、課題で商品を販売するWebアプリケーションを作成しているのですが、
1つのページに複数のボタンがある場合の制御方法が分かりません。

【課題の概要】
課題の画面はJSPで作成し、JSPから送られるパラメータを元に、
処理の振り分けをサーブレットが行い、処理や変数の保持はJavaBeanで行います。
メインの画面では、10種類の商品の購入ボタン、5種類の貨幣投入ボタン、
お釣り返却ボタンなどを配置します。

【現状】
その際に複数のボタンの中から、「どの機能の何番目のボタン」がクリック
されたかの情報を、メインのJSPページからメインのサーブレットに
パラメータとして渡し、処理を制御する必要があります。

お釣り返却ボタンのようにその機能を持ったボタンが一つしかない場合は、
JavaScriptを使って、お釣り返却専用のサーブレットを作成する事は出来ます。

しかし、その方法を取ると、機能ごとにサーブレットも複数になり、購入や
貨幣投入などなど同様の機能を持ったボタンには、対応できません。。。

JavaScriptで対応すべき問題なのかもしれませんが、色々な対応方法を
学習したいと思っているので、対処方法、ヒント、参考になるサイトの情報など
教えて頂けますようお願いします。
Java僧
ぬし
会議室デビュー日: 2003/11/06
投稿数: 261
投稿日時: 2006-07-15 21:08
Strutsには課題の状況 --1つのフォームに複数の操作ボタンがあって、「どのボタンが押されたか?」に基づいて処理する-- パターンを想定した仕組みがあります。

"DispatchAction"、"LookupDispatchAction"について調べてみてください。
これらを使っても商品購入のところは追加で工夫が必要かなあ・・・

#でも1つの機能に1つのservletのデザインも悪くないと思うなぁ。
TOMMY
会議室デビュー日: 2006/07/15
投稿数: 7
投稿日時: 2006-07-16 00:18
早速ご回答頂き、ありがとうございます。
Strutsは次の課題になるので、1つの機能に1つのservletで対応を始めました。

JavaScriptを使って、機能ごとのservletの呼び出しは出来ましたが、
値が取れずに変数にnullが入ってきます。。。

JSPとservletは以下のようになります。
購入ボタンをクリックして、str1もしくはstr2に値が入ってくるようにしたいのですが、
nullが入ってきます。

出来れば数字型で入れたいのですが、文字型で入ってきたら、型変換で
対応できるかと思っています。

何卒、ご回答頂けますようお願い致します。


【JSPページ】

<%@page language="java" %>
<%@page contentType="text/html; charset=Windows-31J" %>
<jsp:useBean id="bean" scope="session" class="jihanki.test_bean"/>

<html>
<head>
<center>テスト</center>
</head>

<script language="JavaScript">
<!--

/*購入ボタンクリック時の送信*/
function BuyCheck(){

document.f.action="/test/servlet/jihanki.test_s";
document.f.submit();
}

/*貨幣ボタンクリック時の送信*/
function MoneyCheck(){

document.f.action="/test/servlet/jihanki.test_s2";
document.f.submit();
}


-->
</script>

<body>
<form name="f" method="POST">

<br>
<td><input type="button" name="button1" value="購入1" onClick="BuyCheck()"></td>
<br>
<td><input type="button" name="button2" value="購入2" onClick="BuyCheck()"></td>
<br>
<td><input type="button" name="button1" value="貨幣1" onClick="MoneyCheck()"></td>
<br>
<td><input type="button" name="button2" value="貨幣2" onClick="MoneyCheck()"></td>

</form>

</body>
</html>



【servlet】

package jihanki;

import java.io.IOException;
import java.sql.Connection;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;


public class test_s extends HttpServlet {

public void doGet( HttpServletRequest request, HttpServletResponse response )
throws IOException, ServletException {
doPost(request,response);}

public void doPost( HttpServletRequest request, HttpServletResponse response )
throws IOException, ServletException {

request.setCharacterEncoding("Windows-31J");
response.setContentType("text/html; charset=Windows-31J");



//JSPからの値の取得
String str1 = request.getParameter("button1");
String str2 = request.getParameter("button2");


}
}
TOMMY
会議室デビュー日: 2006/07/15
投稿数: 7
投稿日時: 2006-07-16 20:33
隠しフィールドのhiddenを使って、添え字をサーブレットに送ることで
対応出来ました。
あすか
ぬし
会議室デビュー日: 2006/07/12
投稿数: 309
投稿日時: 2006-07-20 17:00
type="button"は
nameもvalueもサーバに送られないのです。
(type="submit"なら押したボタンのname,valueが送られます)

hidden属性のオブジェクトを用意してボタン押下時に
ボタンの名前をセットする、という方法を取ったようですが
その方法で間違いありません。

[ メッセージ編集済み 編集者: あすか 編集日時 2006-07-20 17:01 ]
1

スキルアップ/キャリアアップ(JOB@IT)