◆Struts
ActionMessageはpropertiesファイルに書いてやろう
propertiesファイルをstruts-config.xmlで読み込んでいる状態で
new ActionMessage("エラーメッセージの文字列");
を書いても一向に文字が表示されない。
propertiesの中のコード"エラーメッセージの文字列"を
探しに行って、ないので表示されないらしい。
propertiesファイルがある場合は
new ActionMessage("error.code")
resources.properties
error.code=エラーメッセージの文字列
と書かないと、表示されないので注意!
前準備
これらのファイルをtomcatの中からコピってくる
WEB-INF/lib/***.jar
WEB-INF/tld/struts-bean.tld
WEB-INF/tld/struts-html.tld
WEB-INF/tld/struts-logic.tld
WEB-INF/tld/struts-nested.tld
WEB-INF/tld/struts-tiles.tld
TLDのパスの設定をする。
<taglib-uri>struts-bean</taglib>
<taglib-location>tld/struts-bean.tld</taglib>
ここで設定したuriをhtmlの上でimportする。
<%@ taglib uri="struts-bean" prefix="bean" %>
一連のアクション
src/○○○Action
src/○○○Form
jsp/✕✕✕.jsp(遷移前の画面)
jsp/□□□.jsp(遷移後の画面)
<html:form action=△△△ ,,,
<!-- フォームの設定 -->
<form-bean name=○○○Form type=パッケージ.○○○Form />
<!-- アクションの設定 -->
<action path=△△△ type=パッケージ.○○○Action name=○○○Form >
<forward name=キーワード path=□□□.jsp >※次の画面
PreparedStatementの仕様
○
pre = createPrepared("SELECT * FROM ?")
pre.setString(1, "TBL_MEMBER")
✕
pre = createPrepared("SELECT * ?")
pre.setString(1, "FROM TBL_MEMBER")
※FROM句からとかWHERE句から設定などはできないようです。
JSPのエンコード指定しないとよく文字化けする
JSPファイル作成して他の人が更新する度に
エンコードがおかしくなると思ったら、
<%@page pageEncoding="UTF-8"%>
を指定しないと、いくらデフォルトがUTF-8でも
JSP作成時に毎回UTF-8にするように設定しても
勝手にShift_JISになったりするらしい。
ちょっとimportするだけでもエンコードはちゃんと書こう。
JSPからMapやListをFormに送信
FormのInstanceTypeの設定を削除すると、
jspからsubmitされた値のみFormに格納されるようになるが、
そういう場合のMapやListの受け渡し方法をメモ。
◆Map
jsp
<c:forEach var="data" items="${dataMap}" varStatus="status">
<html:hidden property="dataMap(${${data.key}})" value="${data.value}" />
</c:forEach>
Form
Map<String, String> dataMap = new HashMap<String, String>();
Form→jspならkeyにInteger指定したり、オブジェクト入れたりできるが
jsp→Formだと、
JavaでdataMap.push(0, "");として
jspでproperty="dataMap(0)" value=""となってる値を送信すると、
Integer型のキー0とjspから送信されたString型のキー0が別のキーと認識され、
同じキーのデータが2件あるように見えてしまう。
なので、キーはStringじゃないとうまく行かない。
javascript
なんかうまく行かない。
var map = new Array();
map["あ"] = "お";
$.ajax({...
data: "dataMap": map
...});
としてもエラーが出てしまう。
仕方がないので、
$.ajax({...
data: "dataMap(あ)": map["あ"]
...});
とした。これだとMap使ってる意味が、、、
◆List
jsp
<c:forEach var="data" items="${dataList}" varStatus="status">
<html:hidden property="dataList(${status.index})" value="${data}" />
</c:forEach>
Form
List<String> dataList = new ArrayList<String>();
javascript
var list = new Array("あ", "い", "う");
$.ajax({...
data: dataList: list
...});
で送信できる。
最終更新:2013年02月28日 10:46