「struts tips」カテゴリーアーカイブ

struts クエリストリングにパラメータを複数設定する方法

これは少し悩んだ。mapがイテレートできればなと思いつつ、できちゃった。

1.ActionFormクラス

 以下の属性およびセッター、ゲッターを用意する。

 ・MapのMapにして、外側のマップのキーがURLの表示文字列となる。
 ・内側のLinkedHashMapは、キーがクエリストリングのパラメータ、値がパラメータの値となる。
 private Map<String, LinkedHashMap<String, String>> manyParamMap = null;
2.Actionクラス

適当にメソッド化
 private void setMultiParamMap(ActionForm form) {
  TestActionForm form = (TestActionForm) form;

  Map<String, LinkedHashMap<String, String>> manyParamMap = new LinkedHashMap<String, LinkedHashMap<String, String>>();

  LinkedHashMap<String, String> map1 = new LinkedHashMap<String, String>();

  //パラメータをマップに詰める
  map1.put(“name”, “aaa1”);
  map1.put(“address”, “bbb1”);
  map1.put(“age”, “ccc1”);
  //リンク名をキーにしてマップを詰める
  manyParamMap.put(“link001”, map1);

  LinkedHashMap<String, String> map2 = new LinkedHashMap<String, String>();
  //パラメータをマップに詰める
  map2.put(“name”, “aaa2”);
  map2.put(“address”, “bbb2”);
  map2.put(“age”, “ccc2”);
  //リンク名をキーにしてマップを詰める
  manyParamMap.put(“link002”, map2);

  LinkedHashMap<String, String> map3 = new LinkedHashMap<String, String>();
  //パラメータをマップに詰める
  map3.put(“name”, “aaa3”);
  map3.put(“address”, “bbb3”);
  map3.put(“age”, “ccc3”);
  //リンク名をキーにしてマップを詰める
  manyParamMap.put(“link003″, map3);

  //ActionFormにセットする
  form.setManyParamMap(manyParamMap);

 }
3.jsp
イテレートする。
<logic:iterate id=”element” name=”TestActionForm” property=”manyParamMap”>
 <bean:define id=”linkParam” name=”element” property=”value”  />
  <html:link action=”/TestAction” name=”linkParam”>
   <%– キーの部分がリンクの表示名 –%>
   <bean:write name=”element” property=”key” />
  </html:link>
  <br>
</logic:iterate>

 

struts html:formに2個ボタンがある場合のボタン名の取り方

■html:formに2個ボタンがある場合のボタン名の取り方
以下のようにすると、クリックされたボタンのvalueが
ActionFormのプロパティに設定される。

1.html
 <html:submit value=”BBB” property=”buttonB” />
 <html:submit value=”AAA” property=”buttonA” />
 ⇒
 <input type=”submit” name=”buttonB” value=”BBB”>
 <input type=”submit” name=”buttonA” value=”AAA”>

2.ActionForm

 private String buttonA =””;
 private String buttonB =””;

 public String getButtonA() {
  return buttonA;
 }

 public void setButtonA(String buttonA) {
  this.buttonA = buttonA;
 }

 public String getButtonB() {
  return buttonB;
 }

 public void setButtonB(String buttonB) {
  this.buttonB = buttonB;
 }