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

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

新規登録して質問してみよう
ただいま回答率
85.48%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Struts 2

Apache Struts 2は、Apache Strutsプロジェクトにて開発されているオープンソースのJavaベースのWebアプリケーションフレームワークです。Sturts1に比べ、設定ファイルの削減、依存性の注入、POJO等の改善がなされています。

Q&A

解決済

2回答

4729閲覧

Struts2 jspでの計算結果表示について

yuiti926

総合スコア26

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Struts 2

Apache Struts 2は、Apache Strutsプロジェクトにて開発されているオープンソースのJavaベースのWebアプリケーションフレームワークです。Sturts1に比べ、設定ファイルの削減、依存性の注入、POJO等の改善がなされています。

0グッド

0クリップ

投稿2016/04/12 06:20

編集2016/04/13 07:45

以下ソースコードの<output>0</output>のとこに、submitを押して計算結果を反映させるにはどうすればいいですか?

HTML

1コード 2 <FORM action="BmiAction"> 3 身長:<INPUT size="6" type="text" maxlength="4" placeholder="1.8" 4 name="hight" pattern="^([1-9]\d*|0)(\.\d+)?$" required 5 title="小数点以下を含む半角数値のみ受け付けます">m 6 体重:<INPUT size="6" 7 type="text" maxlength="3" placeholder="68" name="weight" 8 pattern="^[0-9]{2,}" required title="2桁以上の半角数字のみ受け付けます">kg 9 <SELECT class="design-select-box"> 10 <OPTION>男</OPTION> 11 <OPTION>女</OPTION> 12 <OPTION>グレイゾーン</OPTION> 13 14 </SELECT> <INPUT type="submit" value="BMIからオススメ商品を表示→" 15 style="background-color: #ffff99" 16 onmouseover="this.style.background='#99ccff'" 17 onmouseout="this.style.background='#ffff99'" onclick=""> <BR>あなたのBMI値は 18 <output>0</output> 19 です 20 </FORM>

見づらくてすいません!

下記がform actionのBmiActionの内容です

java

1コード public class BmiAction extends ActionSupport{ 2 3 /** 4 * シリアルバージョンID 5 */ 6 private static final long serialVersionUID = -6470489626126602974L; 7 public double hight; 8 public int weight; 9 public int kcal; 10 public String result=ERROR; 11 public List<BMIDTO> pickupList=new ArrayList<BMIDTO>(); 12 13/** 14 * BMIを算出してお勧めの商品をリストに格納するメソッド 15 * @param hight 身長 16 * @param weight 体重 17 * @param kcal カロリー 18 * @param pickupList おすすめ商品のリスト 19 * @return result 結果 20 */ 21 public String execute()throws Exception{ 22 23 double bmi = weight/(hight*hight); 24 25 26 if(bmi<25){ 27 kcal=1; 28 }if(bmi>30){ 29 kcal=3; 30 }else{ 31 kcal=2; 32 } 33 34 BmiDAO dao=new BmiDAO(); 35 boolean resultDAO=dao.select(kcal); 36 37 if(resultDAO){ 38 //pickupList.clear(); 39 pickupList.addAll(dao.getPickupList()); 40 41 result=SUCCESS; 42 } 43 return result; 44 } 45 46 /** 47 * 身長情報取得メソッド 48 */ 49 public double getHight() { 50 return hight; 51 } 52 53 /** 54 * 身長情報格納メソッド 55 */ 56 public void setHight(double hight) { 57 this.hight = hight; 58 } 59 60 /** 61 * 体重情報取得メソッド 62 */ 63 public int getWeight() { 64 return weight; 65 } 66 67 /** 68 * 体重情報格納メソッド 69 */ 70 public void setWeight(int weight) { 71 this.weight = weight; 72 } 73 74 /** 75 * カロリー情報取得メソッド 76 */ 77 public int getKcal() { 78 return kcal; 79 } 80 81 /** 82 * カロリー情報格納メソッド 83 */ 84 public void setKcal(int kcal) { 85 this.kcal = kcal; 86 } 87 88 /** 89 * おすすめ商品情報取得メソッド 90 */ 91 public List<BMIDTO> getPickupList() { 92 return pickupList; 93 } 94 95 /** 96 * おすすめ商品情報登録メソッド 97 */ 98 public void setPickupList(List<BMIDTO> pickupList) { 99 this.pickupList = pickupList; 100 } 101 102} 103

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

ActionクラスならびにFormの詳細なソースありがとうございました。

Actionクラスで計算結果は メソッドのローカル変数bmi に格納されているようですが、JSPで表示するためには、他の変数同様に入出力のメソッドを必要に応じて実装します。
今回bmiはJSPに表示するだけ、つまり画面へ出力する変数についてはsetメソッドは使わず、getメソッドのみ実装します。

java

1public class BmiAction extends ActionSupport { 2 private double bmi; 3 public double getBmi() { 4 return this.bmi; 5 } 6 7 public String execute()throws Exception{ 8 bmi = weight/(hight*hight); 9 .....(省略)..... 10 return SUCCESS; 11 } 12}

計算後の変数 bui を出力するJSPは次のようになりますので、あとは元のHTMLに合わせてお使いください。

jsp

1<%@ page contentType="text/html; charset=UTF-8" %> 2<%@ taglib prefix="s" uri="/struts-tags" %> 3<html> 4<body> 5 <s:property value="bmi"/> 6</body> 7</html>

JavaScriptならびにHttpSessionは使う必要がありません。

投稿2016/04/14 14:56

A-pZ

総合スコア12011

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

A-pZ

2016/04/14 14:56

ちなみに身長は height ですよ。
yuiti926

2016/04/18 02:41

ありがとうございます!出来ました!
guest

0

計算結果をSessionに突っ込んでおく前提で、

・Sessionに値がセットされてなかったら0を出力
・Sessionに値がセットされていたらその値を出力

としてやればよいのでは?

あとは参考→JSTLリファレンス:<c:choose><c:when><c:otherwise>

追記:
Actionで値の計算はできてるので、その結果をjspに渡すだけですよね。
参考→Struts2.0.9で処理結果を次の画面で使用する | 世界はどこまでもシンプルである

投稿2016/04/12 09:03

編集2016/04/13 01:27
tkturbo

総合スコア5572

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuiti926

2016/04/12 09:09

OKを押したら、この計算結果が表示されるみたいなことやりたいんです https://gyazo.com/6ff1e11bb3f93f36e45ec719e61fa0f3 多分私の聞いていることはすごい単純なことだと思うのでそのつもりで再回答お願いします!
tkturbo

2016/04/12 09:14

「この計算結果が表示される」←クライアントサイドだけでもできる話ですが、 「OKを押したら、」←これが前提なのでサーバサイドの処理が必須になってしまってます。 質問者ソースのformでサーバサイドに送信された値の取得の仕方はわかっていますか? また、上の値を取得した結果で計算する処理をどの位置に、どのように書けばよいかわかっていますか?
A-pZ

2016/04/12 09:22

Struts2のタグがついていますので、Struts2前提で話をします。 * サーバ側の処理にStruts2のActionクラスが必要になります。Actionクラスはどのように実装されていますでしょうか。 * サーバから値を表示するためにはHTMLではなく、JSPやその他テンプレートエンジンを利用したものが必要です。
yuiti926

2016/04/13 01:26

質問文ソースにあるformのactionの中身追加しました! この中にあるBMI計算の結果を、ボタンを押したらoutputのところに出力されるようにしたいのです javascriptを使う方法なども聞いたのですが、javaとjsp側だけで完結させることは可能でしょうか?
yuiti926

2016/04/13 02:01

別にoutputでなくとも、文字として出力できるのなら何でもいいんです
tkturbo

2016/04/13 02:03

処理結果を出力する/出力しないというだけの問題なので、「javaとjsp側だけで完結させることは」当然可能です。 実装方法などは回答の追記部分で示したリンク先などを参考にしてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問