Struts2のifタグの使い方について

このQ&Aのポイント
  • Struts2のifタグでpropertyタグの値を条件として使用する方法について教えてください。
  • Struts2の学習中に問題が発生しました。iteratorでlistの中のmapの値を取得し、ifタグの条件にpropertyタグの値を使用しましたが、正しく判定されませんでした。
  • 使用しているstruts2のバージョンは2.0.14です。どのようにすればifタグのtest属性内でpropertyタグを使用できるでしょうか?
回答を見る
  • ベストアンサー

Struts2のifタグについて

いつもお世話になっております。 現在Struts2の学習を行っているのですが、 iteratorでlistの中のmapの値を取得しているのですが、 データを表示させるか判定に使用するifのタグの条件に propertyタグで取得した値を使用としたら、 正しく判定されませんでした。 どうしたらifタグのtest属性内でpropertyタグを使用できるでしょうか? <table> <s:iterator id="categoryList" value="categoryList" status="rowstatus" > <s:property value="CATEGORYNAME"/> <table border="3"> <s:iterator id="categoryTopicList" value="categoryTopicList" status="rowstatus" > <s:if test='<s:property value="TCID"/> == <s:property value="CATEGORYID"/>'> <tr> <td><s:property value="CATEGORYID" /></td> <td><s:property value="TCID" /></td> <td><s:property value="TOPICNAME" /></td> <td><s:property value="PROCEDURE"/></td> </tr> </s:if> </s:iterator> </table> </s:iterator> というようにjspは記述しています。 ifタグを使わずに表示させると値は取得されていたのでDBエラー等ではありませんでした。 使用しているstruts2のバージョンは2.0.14です。 ifタグにpropertyタグの値を条件として記述する方法を教えてください。 よろしくお願いします。

  • Java
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

<s:if test="#categoryTopicList.TCID == #categoryTopicList.CATEGORYID"> でどうでしょう? #categoryTopicListは、idに指定してある名前です。 ですから、 <s:iterator id="categoryTopic" value="categoryTopicList" status="rowstatus" > とした場合は、 <s:if test="#categoryTopic.TCID == #categoryTopic.CATEGORYID"> になります。

heka_11
質問者

お礼

ありがとうございます。 ちゃんと条件付することができました。 属性内に取得した値を入れる際には、 id属性を付けてidからデータ指定した方がいいんですね。 大変参考になりました。 ありがとうございました。

関連するQ&A

  • struts2 iteratorタグ内でActionFormの値を参照したい

    iteratorタグを使えば、iterator内で「○○.xxx」としなくても「xxx」で 値を参照できますよね。 リスト以外のActionFormの値を参照するにはどのように指定すればよいでしょうか。 初歩的なことですが、WEBで見つけることができなませんでした。よろしくお願いします。 <s:property value="%{title}" /> <s:iterator value="hogeList"> <s:property value="%{name}" /><BR /> <%-- ■ここにActionFormの値を表示したい!■ --%> </s:iterator>

    • ベストアンサー
    • Java
  • struts2のiteratorについて

    sturuts2の画面表示値の取得について教えてください。 Action側でmap<String,List>で保持している変数を 画面上に表示することはできたのですが、 textfieldやラジオボタン、チェックボタンなどで入力された値を Action側で取得したい場合、どのような形でコーディングすれば取得できます? 例)以下の例ではAction側で取得できませんでした。。。 <s:iterator value="hogeMap" status="map"> <s:iterator value="hogeList" status="list"> <s:textfield name=hogeMap[key].hogeList[%(#list.index)].hogehoge value=""> </s:iterator> </s:iterator>

  • tableタグとformタグの組み合わせ

    tableタグとformタグの組み合わせでどのように記述すれば、構文上正しいのでしょうか? 私は下のパターンで書いておりますが、間違いでしたら早めに改めたいので お聞きしました。 <table> <form> <input type="hidden" name="a" value="1"> <tr> <td> <input type="text" name="b" value=""> </td> </tr> <tr> <td> <input type="submit" value="OK" value=""> </td> </tr> </fomr> </table>

    • ベストアンサー
    • HTML
  • Struts2のiteratorタグの使い方

    Struts2でiteratorタグを使用したいのですがJSPでの記述方法がわからず困っています。 アクションクラス、JSPでは以下のように記述しております。 検索するとActionクラス内でArrayListに独自のクラスが格納されている状態での記述方法 はサンプルとしてあったのですがArrayListにStringが格納されていた場合の記述方法に 関しての記載が見つかりませんでした。そのため現在、JSP側ではsession.getattribute()を 使用してしのいでいる次第です。 public ArrayList<String> getDatalist() { return this.datalist; } public void setDatalist(ArrayList<String> datalist) { this.datalist = datalist; } public String execute() { ArrayList<String> datalist = bdf.getDataList(); return "success";    } 以下、JSP側の記述 <s:iterator value="datalist"> ここの記述が不明 </s:iterator>

    • ベストアンサー
    • Java
  • taglibが見つかれません。。と。。(jsp)

    お疲れ様です。 jspページの ユーザ数 : <s:property value="userCount" />人 <br /><br /> の部分に 「's'に対するtaglibディクティブが存在しないかTLDファイルが見つかりません。」とエラーがでます。 他のs:property部分は全部エラーがでます。 ソースは下記の通りです。 <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="Windows-31J"%> <%@taglib prefix="s" uri="/struts-tags" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>List User</title> </head> <body> ユーザ一覧<br /><br /> <!-- ListUserAction.getUserCount()が呼び出される。 --> ユーザ数 : <s:property value="userCount" />人 <br /><br /> <table border="1"> <tr> <th>ID</th> <th>指名</th> <th>出身地</th> </tr> <!-- ListUserAction.getUserlist()が呼び出され全データを繰り返しループ。--> <!-- その後、それぞれのループ毎に以下のメソッドが呼ばれる。 --> <!--  ListUserAction.getUserlist().getId()      --> <!--  ListUserAction.getUserlist().getName()     --> <!--  ListUserAction.getUserlist().getPref()     --> <s:iterator value="userlist"> <tr> <td><s:property value="id" /></td> <td><s:property value="name" /></td> <td><s:property value="pref" /></td> </tr> </s:iterator> </table> </body> </html> フレームワークはstruts2.0を使っています。 どうやったら解消できましょうか。 お答え宜しくお願い致します。

    • ベストアンサー
    • Java
  • Struts2のタグについて

    Struts2のタグにてJSP内にテキストボックスを以下のように記述しています。 この場合、JSPが最初に表示されたときはテキストボックス内には初期値として40 が表示されます。しかし、テキストボックスに 5 を入力しなおして サブミットし、再度JSPの画面が表示された時には40の値が表示されてしまいます。 value="40" の部分を消しておけばJSP画面再表示時には入力した 値が表示されますが初期表示としてvalueの部分は欲しいと思っています。 初期値の設定項目であるvalueの部分を残しながらもJSPの再表示時には 入力しなおした値が表示されるというような処理は以下のタグでは 無理なのでしょうか。何か良いお知恵がありましたらよろしくお願いいたします。 <s:textfield label="会員ID" name="id" value="40" />

    • ベストアンサー
    • Java
  • Strutsでoptionタグの作り方

    例えばActionFormのメンバにBeanのリストがあるとして、 JSPではStrutsのhtmlタグを使ってselectボックスのoptionに ActionForm内のBeanリストをセットする方法を教えて下さい。 具体的に実現したいことは以下のような事です。 例> // アクションフォーム public sampleForm extends ActionForm {  private List<sampleBean> sampleBeanList; // getter、setterは省略 } // JSPでStrutsタグ(<html:select>とか<html:options>)を使って以下のようなセレクトボックスを作成したい! // 実現方法をご存知のかた、どうかご教示ください。 <select> <option value="sampleBeanのプロパティ">sampleBeanのプロパティ</option> <option value="sampleBeanのプロパティ">sampleBeanのプロパティ</option> <option value="sampleBeanのプロパティ">sampleBeanのプロパティ</option> <option value="sampleBeanのプロパティ">sampleBeanのプロパティ</option> </select> ちなみに環境は以下の通りです。 Java 1.6 Struts 1.3.8 Tomcat 6 以上、宜しくお願い致します。

  • tableタグについて

    <table width="700" border="0"> <tr><td width="700">あああああああ</td></tr> <tr><td width="200">いい</td><td width="500">ううううう</td></tr> </table> このタグですと【ああああああ】の部分が2段になります。 多分<td width="200">のためやと思うのですが、 <tr><td width="200">いい</td><td width="500">ううううう</td></tr> の部分を <tr><td width="700"><table width="700"><tr><td width="200">いい</td><td width="500">ううううう</td></tr></table></td></tr> にすると表示されます。 この方法以外にもっと簡単に表示できる方法はないでしょうか お願いします。

    • ベストアンサー
    • HTML
  • StrutsでのButton表示

    Strutsを使っていて、思い通りに表示できない部分があります。 ボタンを沢山表示させたいのですが、表示させるボタンの名前はXMLに記述されています。 iterateタグにて下記のコードを出力させます。↓ <html:button property="send" value ="" /> valueの部分に値を入れるとボタン名になると思います。 ボタン名にしたい値は下記の中で取得できています。↓ <bean:write name="api" property="button" /> ↑の値をなんとかしてvalueの中に代入してあげたいのですが、いろいろ試したもののうまくいきません。 おわかりになる方いらっしゃいましたらお願いします。

    • ベストアンサー
    • Java
  • Java Struts ~に対するゲッターメソッドがありません

    Java Struts WindowsXp Java Struts共に初心者です。 上記を使用してログイン画面を作成しています。 エラーが発生しているのですが 「Bean LoginFrm のプロパティ id に対するゲッターメソッドがありません」 と言われます。 参考サイトはいくつもあるのですが、そもそもイテレータを使用していないとか私の状況に一致する回答を見つけることができませんでした。 (JAVA、Struts共に慣れていないためか応用がきかないみたいです) loginTop.jsp login.jsp LoginFrm.java LoginAct.java struts-config.xml のいずれかが原因だとは思うのですが、そのどこかが皆目見当もつきません。 loginTop.jsp----------------------------- <html:form action="/login"> <table border="0"> <tr><td> ログインID<html:text name="LoginFrm" property="id" size="6" maxlength="5" /> </td></tr> <tr><td> パスワード<html:password name="LoginFrm" property="pass" size="6" maxlength="5" /> </td></tr> </table> </html:form> login.jsp---------------------- <html:form action="/login"> <table border="0"> <tr><td> A:<bean:write name="LoginFrm" property="id" /> </td></tr> <tr><td> B:<bean:write name="LoginFrm" property="pass" /> </td></tr> </table> </html:form> LoginFrm.java---------------------- private String id; private String pass; public String getID() { return id; } public void setID(String id) { this.id = id; } public String getPass() { return pass; } public void setPass(String pass) { this.pass = pass; } LoginAct.java-------------------- throws Exception { request.setCharacterEncoding("Windows-31J"); LoginFrm logFrm = (LoginFrm) form; log.info(" user = "+logFrm.getID()); log.info(" user = "+logFrm.getPass()); return mapping.findForward("login"); } struts-config.xml--------------------------- <form-beans> <form-bean name="LoginFrm" type="loginForm.LoginFrm" /> </form-beans> ~ <action attribute="LoginFrm" input="/pages/loginTop.jsp" name="LoginFrm" path="/login" type="loginAction.LoginAct" scope="request" validate="true"> <forward name="login" path="/pages/login.jsp" /> </action> 以上です。 かなり長くなり申し訳ありません。

    • ベストアンサー
    • Java

専門家に質問してみよう