java 左詰を行なう(Apache Commons Lang StringUtils)

プロジェクトによって使用されたりされなかったり
する感じだけど、かなり便利なので紹介する。

■java 左詰を行なう。

 StringUtils.leftPadを使用すると一行で終わる。

 実行すると以下の通り
 log(“———–padleft———–“);
 log(padLeft(“12”, 5, “0”));
 log(padLeft(“123”, 5, “0”));
 log(padLeft(“12345”, 5, “0”));

 [———–padleft———–]
 [00012]
 [00123]
 [12345]

 /**
  * 左埋めを行なう。
  *
  * @param subject
  *            対象の文字列
  * @param keta
  *            桁数
  * @param paddingStr
  *            埋める文字
  * @return String
  */
 public static String padLeft(String subject, int keta, String paddingStr) {

  return StringUtils.leftPad(subject, keta, paddingStr);
 }

IE6でJavaScriptの有効/無効を設定する。

めったにやんないからすぐ忘れてしまう。忘れたいこと他にいくつかあんだけど。

まぁそれはいいとして。

■IE6でJavaScriptの有効/無効を設定する。
ツール(T) -> インターネットオプション(O) -> 「セキュリティ」タブ ->
「レベルのカスタマイズ」ボタン -> 「スクリプト」 の
「アクティブスクリプト」で「有効にする」を選択。

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;
 }

Fiddler2でテスト

WEBアプリケーションのセキュリティに関するテスト。

リクエスト時にヘッダを書き換えてテストしてみる。

クッキーヘッダに改行+文字などすると
(例: JSESSIONID=E044670A524F5B686FA8D7E894926884;
改行AAA

このエラーが出る。
Bad Request

Your browser sent a request that this server could not understand.
Request header field is missing ‘:’ separator.

これは、
改行があるために、改行後に別のヘッダーが存在していると

サーバーがみなしていて、
ヘッダー名とフィールドと値の間に:が区切られてないよって言ってる。