SAStruts関連
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
] [
Twitter
]
開始行:
→Struts関連
→JavaのWebアプリ開発
#contents
*一般記事 [#c1af4409]
-[[StrutsのXML地獄から開発者を解放するSAStruts@IT>http://...
-[[SAStruts>http://sastruts.seasar.org/]]
-http://wiki.paulownia.jp/java/sastruts
-[[SAStruts入門>http://snowhiro.web.fc2.com/sastruts/]]
-[[SAStrutsPlugin>http://sastruts.seasar.org/sastrutsplug...
-[[SASTruts チートシート>http://seasar-users.jp/cheatshee...
*Tips [#od10ebbb]
-SAStrutsで任意の場所でロールバックしたいとき
--http://ml.seasar.org/archives/seasar-user/2008-October/...
@Resource
public UserTransaction userTransaction;
...
userTransaction.setRollbackOnly();
-テーブルの一部の列を入力欄にして、各行につけたボタンでsu...
--JSP側。html:text のindexedをfalseにするのがポイント
<c:forEach var="m" items="${mapItems}" begin="0"
end="${dispMax - 1}" step="1">
<s:form target="_blank" >
<tr>
<td class="data01">${f:h(m.referenceId)}</td>
<td class="data01">${f:h(m.orderNo)}</td>
<td class="data01">${f:h(m.orderDateYmd)}</td>
<td class="data01">
<html:text name="m" property="passengerName" indexed="...
</td>
<td class="data01">
<html:text name="m" property="messageBox" indexed="fal...
</td>
<td class="data01">${f:h(m.issuedStatus)}</td>
<td class="data01">${f:h(m.childCd)}</td>
<td class="data01">
<html:hidden property="id" value="${m.referenceId}"/>
<input type="submit" name="detail" value="詳細表示"/>
</td>
</tr>
</s:form>
</c:forEach>
--フォームクラス側
public String issued_status; //発行ステータス
public String ken_syubetsu;
public String child_code;
--Action側はdetailメソッドが呼ばれたときにフォームの変数...
-validateでエラーになったときに遷移する先(input属性で指定...
--inputにはjspだけでなくurlを指定しても良いので、Actionに...
-[[SAStrutsの入力チェックの順序>http://d.hatena.ne.jp/kor...
-セッションのDtoでIllegalArgumentExceptionになる場合、ser...
ないクラスをメンバに持っていないかチェック
2009-05-18 19:04:05,156 [http-8080-2]
org.apache.struts.action.RequestProcessor
ERROR - パス /index に対するアクションのインスタンスがあ...
Caused by: java.lang.IllegalArgumentException:
-サーバの処理結果をポップアップメッセージで出すには
--jsp側でこのようにしておく
<body onload="${f:h(onLoadScript)}">
--Action側でonLoadScriptのプロパティを用意し、そこにjavas...
--(例)
this.onLoadSctipt = "alert('更新処理が正常に終了しました...
--onLoadScriptプロパティは必要ならセッションスコープにす...
--jspをリロードする
--ただしこの方法だと戻るボタンなどでそのページに戻ってき...
-リクエストのヘッダ情報を参照
HttpServletRequest req = RequestUtil.getRequest();
Enumeration<String> e = req.getHeaderNames();
while( e.hasMoreElements() ) {
String s = e.nextElement();
System.out.println(s + "=" +req.getHeader(s) );
}
-画像のバイナリイメージをHTTPレスポンスとして出力
package test.action;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.imageio.ImageWriter;
import javax.imageio.stream.ImageOutputStream;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import org.seasar.struts.annotation.Execute;
import org.seasar.struts.util.ResponseUtil;
public class OutImgAction {
public String id;
//
// 画像をhttpレスポンスのボディとして出力してみるテスト
//
// 呼ぶときは↓こんなふうにします
// http://localhost:8080/test/outImg/output/1
//
@Execute(validator=false, urlPattern = "output/{id}")
public String output() {
try {
URL url = getClass().getResource("../../data/sampl...
BufferedImage im = ImageIO.read(url.openStream());
HttpServletResponse response = ResponseUtil.getRes...
response.setContentType("image/jpeg");
ServletOutputStream sos = response.getOutputStream...
ImageOutputStream ios = ImageIO.createImageOutputS...
ImageWriter iw = (ImageWriter)ImageIO.
getImageWritersByFormatName("jpeg"...
iw.setOutput(ios);
//IDを表示してみる
Graphics2D g = im.createGraphics();
g.setColor(Color.BLACK);
g.drawString("id="+id, 20, 20);
g.dispose();
iw.write(im);
ios.close();
sos.close();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Execute(validator = false)
public String index() {
return "/";
}
}
--注意点:ServletOutputStreamを明示的にclose()してやらな...
java.lang.IllegalStateException: レスポンスをコミットし...
-[[AJAXでXMLを取得>http://code.nanigac.com/source/wiki/vi...
-[[SAStruts関連@codeなにがし>http://code.nanigac.com/sour...
--[[SAStrutsに関して読んでおきたい資料集>http://code.nani...
--[[DoltengでHello project>http://code.nanigac.com/source...
---Apache+Tomcat連携設定の説明アリ
--[[開発時に気をつけること>http://code.nanigac.com/source...
---プロパティ以外でgetXXXXというメソッド名にしない
---セッションスコープにした変数にSerializableをimplements...
-[[サーバ再起動不要のSMART deployとバリデーション>http://...
--SMART deployはDIコンテナである「Seasar」のバージョン2.4...
--デプロイ方法には「HOT」「COOL」「WARM」の3種類がありま...
--開発時には便利なHOT deployですが、若干パフォーマンスが...
--WARM deployは必要なとき必要なクラスを読み込むもので、HO...
--すべての設定を行うと、当然それだけ起動が遅くなるので、...
-[[JSPでActionに指定したrolesを使う>http://d.hatena.ne.jp...
-[[SAStrutsでログイン確認インターセプタを使う>http://d.ha...
-[[SAStrutsタグ>http://www.atmarkit.co.jp/fjava/rensai4/s...
--<s:form>タグ
--<s:form>タグは、Strutsのカスタムタグの1つ<html:form>タ...
--SAStrutsで用意されている<s:form>タグではaction属性を設...
基準として、パスが「/」で始まっている場合、コンテキストル...
--この自動計算により、リクエストのパスが「/dept」であって...
あっても、相対パスで入力してあっても出力URLがずれたりする...
-- <s:link>タグ
--<s:link>タグは先ほど紹介した<s:form>タグのリンク版です...
-- <s:submit>タグ
--<s:submit>タグはStrutsの<html:submit>タグに代わるもので...
--<s:submit>タグを使用すると、簡単にクライアントバリデー...
終了行:
→Struts関連
→JavaのWebアプリ開発
#contents
*一般記事 [#c1af4409]
-[[StrutsのXML地獄から開発者を解放するSAStruts@IT>http://...
-[[SAStruts>http://sastruts.seasar.org/]]
-http://wiki.paulownia.jp/java/sastruts
-[[SAStruts入門>http://snowhiro.web.fc2.com/sastruts/]]
-[[SAStrutsPlugin>http://sastruts.seasar.org/sastrutsplug...
-[[SASTruts チートシート>http://seasar-users.jp/cheatshee...
*Tips [#od10ebbb]
-SAStrutsで任意の場所でロールバックしたいとき
--http://ml.seasar.org/archives/seasar-user/2008-October/...
@Resource
public UserTransaction userTransaction;
...
userTransaction.setRollbackOnly();
-テーブルの一部の列を入力欄にして、各行につけたボタンでsu...
--JSP側。html:text のindexedをfalseにするのがポイント
<c:forEach var="m" items="${mapItems}" begin="0"
end="${dispMax - 1}" step="1">
<s:form target="_blank" >
<tr>
<td class="data01">${f:h(m.referenceId)}</td>
<td class="data01">${f:h(m.orderNo)}</td>
<td class="data01">${f:h(m.orderDateYmd)}</td>
<td class="data01">
<html:text name="m" property="passengerName" indexed="...
</td>
<td class="data01">
<html:text name="m" property="messageBox" indexed="fal...
</td>
<td class="data01">${f:h(m.issuedStatus)}</td>
<td class="data01">${f:h(m.childCd)}</td>
<td class="data01">
<html:hidden property="id" value="${m.referenceId}"/>
<input type="submit" name="detail" value="詳細表示"/>
</td>
</tr>
</s:form>
</c:forEach>
--フォームクラス側
public String issued_status; //発行ステータス
public String ken_syubetsu;
public String child_code;
--Action側はdetailメソッドが呼ばれたときにフォームの変数...
-validateでエラーになったときに遷移する先(input属性で指定...
--inputにはjspだけでなくurlを指定しても良いので、Actionに...
-[[SAStrutsの入力チェックの順序>http://d.hatena.ne.jp/kor...
-セッションのDtoでIllegalArgumentExceptionになる場合、ser...
ないクラスをメンバに持っていないかチェック
2009-05-18 19:04:05,156 [http-8080-2]
org.apache.struts.action.RequestProcessor
ERROR - パス /index に対するアクションのインスタンスがあ...
Caused by: java.lang.IllegalArgumentException:
-サーバの処理結果をポップアップメッセージで出すには
--jsp側でこのようにしておく
<body onload="${f:h(onLoadScript)}">
--Action側でonLoadScriptのプロパティを用意し、そこにjavas...
--(例)
this.onLoadSctipt = "alert('更新処理が正常に終了しました...
--onLoadScriptプロパティは必要ならセッションスコープにす...
--jspをリロードする
--ただしこの方法だと戻るボタンなどでそのページに戻ってき...
-リクエストのヘッダ情報を参照
HttpServletRequest req = RequestUtil.getRequest();
Enumeration<String> e = req.getHeaderNames();
while( e.hasMoreElements() ) {
String s = e.nextElement();
System.out.println(s + "=" +req.getHeader(s) );
}
-画像のバイナリイメージをHTTPレスポンスとして出力
package test.action;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.imageio.ImageWriter;
import javax.imageio.stream.ImageOutputStream;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import org.seasar.struts.annotation.Execute;
import org.seasar.struts.util.ResponseUtil;
public class OutImgAction {
public String id;
//
// 画像をhttpレスポンスのボディとして出力してみるテスト
//
// 呼ぶときは↓こんなふうにします
// http://localhost:8080/test/outImg/output/1
//
@Execute(validator=false, urlPattern = "output/{id}")
public String output() {
try {
URL url = getClass().getResource("../../data/sampl...
BufferedImage im = ImageIO.read(url.openStream());
HttpServletResponse response = ResponseUtil.getRes...
response.setContentType("image/jpeg");
ServletOutputStream sos = response.getOutputStream...
ImageOutputStream ios = ImageIO.createImageOutputS...
ImageWriter iw = (ImageWriter)ImageIO.
getImageWritersByFormatName("jpeg"...
iw.setOutput(ios);
//IDを表示してみる
Graphics2D g = im.createGraphics();
g.setColor(Color.BLACK);
g.drawString("id="+id, 20, 20);
g.dispose();
iw.write(im);
ios.close();
sos.close();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Execute(validator = false)
public String index() {
return "/";
}
}
--注意点:ServletOutputStreamを明示的にclose()してやらな...
java.lang.IllegalStateException: レスポンスをコミットし...
-[[AJAXでXMLを取得>http://code.nanigac.com/source/wiki/vi...
-[[SAStruts関連@codeなにがし>http://code.nanigac.com/sour...
--[[SAStrutsに関して読んでおきたい資料集>http://code.nani...
--[[DoltengでHello project>http://code.nanigac.com/source...
---Apache+Tomcat連携設定の説明アリ
--[[開発時に気をつけること>http://code.nanigac.com/source...
---プロパティ以外でgetXXXXというメソッド名にしない
---セッションスコープにした変数にSerializableをimplements...
-[[サーバ再起動不要のSMART deployとバリデーション>http://...
--SMART deployはDIコンテナである「Seasar」のバージョン2.4...
--デプロイ方法には「HOT」「COOL」「WARM」の3種類がありま...
--開発時には便利なHOT deployですが、若干パフォーマンスが...
--WARM deployは必要なとき必要なクラスを読み込むもので、HO...
--すべての設定を行うと、当然それだけ起動が遅くなるので、...
-[[JSPでActionに指定したrolesを使う>http://d.hatena.ne.jp...
-[[SAStrutsでログイン確認インターセプタを使う>http://d.ha...
-[[SAStrutsタグ>http://www.atmarkit.co.jp/fjava/rensai4/s...
--<s:form>タグ
--<s:form>タグは、Strutsのカスタムタグの1つ<html:form>タ...
--SAStrutsで用意されている<s:form>タグではaction属性を設...
基準として、パスが「/」で始まっている場合、コンテキストル...
--この自動計算により、リクエストのパスが「/dept」であって...
あっても、相対パスで入力してあっても出力URLがずれたりする...
-- <s:link>タグ
--<s:link>タグは先ほど紹介した<s:form>タグのリンク版です...
-- <s:submit>タグ
--<s:submit>タグはStrutsの<html:submit>タグに代わるもので...
--<s:submit>タグを使用すると、簡単にクライアントバリデー...
ページ名: