△△もっとStrutsの良 ..
[2ch|▼Menu]
640:デフォルトの名無しさん
08/02/20 03:47:38
ダイナミックなモジュールのロード・アンロードでSpring OSGi に期待してるんだけど、SpringDMってそういうもんだよね?

641:デフォルトの名無しさん
08/02/20 20:46:18
>>639
複数台あっても、抑止かけるんだから結局同じことなんじゃ?

642:デフォルトの名無しさん
08/02/21 00:01:10
>641
かけません。
最低1台稼動させたまま入れ替えます。

643:デフォルトの名無しさん
08/02/21 00:39:15
>>642
うん、それそれ
例えば10台あって、2台ごとにグルーピングされているとして、
Aグループを停止している間、グループB・C・D・Eが起動していて、Aグループへのアクセスは抑止しておく
うちは、これをアプリケーション(業務処理)単位でやってるリリースパターンがあるんだけど、
はて、実際どうやってんだろ
この2台の組がなんちゃってデュアル構成なんだけど、これをうまくどうにかして、どうにかしちゃってるんだろうか

644:デフォルトの名無しさん
08/02/21 00:46:24
定義ファイルだろうがアノテーションだろうが関係無い話だな。

645:デフォルトの名無しさん
08/02/21 01:06:58
アノテーションだとコンパイルしなきゃいけないじゃない
リリース中はこの画面に遷移するように、って一時的な変更をコンパイルでやってたら、永遠に終わらなくない?
Aグループに属するαサーバとβサーバを、それぞれ交代でアップデートするときに、
βへのアクセスを抑止させて、定義ファイルを更新して、
次にαを抑止させて、βを解放して、その間αをアップデートさせて、αを通常運転に戻して、βをアップデートして、
βも通常運転に戻す・・・だったかな?よく覚えてないけど、そんな感じ

ってのを、コンパイルでやろうとすると
βへのアクセスを抑止させて、コンパイルして、デプロイして、・・・あ、出来なくもないね

ただ、ソースをいちいちいじらないといけないから、混乱しそうだわな
リリース用に、遷移ロジックのあるソースをいじる、うーん、ないな
やっぱリリース運用はファイル中心だなぁ

646:デフォルトの名無しさん
08/02/21 01:35:54
warでデプロイするならeclipse上で設定ファイル書き換えてwar固めてデプロイでも
アノテーション書き換えてwar固めてデプロイでも変わらない。
あと通常モードと停止モードの二つのモジュールを事前に用意しておくのが
当然だと思う。別にβへのアクセスを止めてからコンパイルする必要なんてない。

つーかコンテナの話はもういいからstrutsの話しようぜ


647:デフォルトの名無しさん
08/02/21 16:41:15
こういうコンテナの話ってどこですればいいんだろう?
昔は
「JAVA+JSP+Strugs+Tomcat」スレなんてものがあったが、
JavaServlet全般とか Servletコンテナ全般のスレがほしい。


648:デフォルトの名無しさん
08/02/22 01:02:49
>>647
スレタイを変えた後継スレがあります。
コンテナの話はこのスレならスレ違いにならないと思います。

Java+Webフレームワーク
スレリンク(tech板)

649:647
08/02/22 03:43:27
>>648
どうもありがとう、巡回先に入れました。
でもあまりにぎわってないな・・・・・
話題提供するようにします

650:デフォルトの名無しさん
08/03/02 17:52:38
ActionFormにArrayListがありその中にArrayListがあるような
構造のデータを受け取るようにするにはどうしたらいいでしょうか?

651:デフォルトの名無しさん
08/03/02 18:34:24
ArrayListをListDataModelにsetRowIndexすればdataTableタグで受け取れる

652:☆Visual C++ Runtime Libraryってエラーが出てネットゲーム強制終了
08/03/02 20:03:10
ネットゲームを2時間くらいやるとやってる途中にURLリンク(imepita.jp)のようなエラーがでて、
強制終了されます。どうしたらよいのでしょう。
厨房なので、ぐぐっても全くわかりません。
どなたかご存知の方教えてください

653:デフォルトの名無しさん
08/03/02 20:46:19
スレ違い

654:デフォルトの名無しさん
08/03/06 01:59:32
教えてほしいのですが、
WebLogic Workshopを使わずに、EclipseでWeblogicとStrutsの連携をどうすれば良いですか?
Weblogicは9.2です。


655:デフォルトの名無しさん
08/03/08 19:57:23
WebLogic® Server Toolsを使え
URLリンク(dev2devclub.bea.com)

656:デフォルトの名無しさん
08/03/11 03:40:54
質問なのですがstruts-config.xmlのactionのforwardエレメントに
プレースホルダーとかって使えないんですかね?
<forward name="success" path="/${0}/test.html"/>
こんな事がしたいんですが知っていたらご教授お願いします。

環境はstruts1.3です

657:デフォルトの名無しさん
08/03/11 19:48:37
知らないけど、ForwardingActionForward使っておけば?

658:デフォルトの名無しさん
08/03/20 20:39:15
最近Strutsを触り始めたんですが、ちょっとつまづいたので教えてください

画面Aと画面Bがあって各々ActionFormが違う場合
AからBに遷移するActionのなかで
ActionFormBをnewしてActionFormAの値をコピーしています。

ソースだとこんな感じ。
ActionFormA a = (ActionFormA) form;
ActionFormB b = new ActionFormB();

aからbにコピー

form = b;

こうやっても画面BでActionFormBの値がとれないのどすが、何が間違ってるのでしょうか?
そもそも遷移前と遷移後でフォームが違う場合どうするのがよいのでしょうか?



659:デフォルトの名無しさん
08/03/23 02:29:49
同じクラスのフォームビーン使うようにすればいいんじゃない?

660:デフォルトの名無しさん
08/03/23 11:48:40
bがrequestにもsessionにもいないんでしょ。

661:デフォルトの名無しさん
08/03/24 13:14:43
JavaAppletとStruts2のアクション間で非同期通信したいんだけど、
フレームワーク内部でInputStreamが読まれており、アクションで取得できません。
なんかいい方法ない?

662:デフォルトの名無しさん
08/03/24 20:52:21
これまた理解力を発揮しがいのある質問文ですねage

663:デフォルトの名無しさん
08/03/24 22:58:48
文字列化してリクエストパラメータの一つに
してしまえば良いんじゃね?

664:デフォルトの名無しさん
08/03/25 04:41:48
Appletはyesterdayの技術だけど、セキュリティ絡みでAppletに逃げる奴多いな

665:デフォルトの名無しさん
08/03/25 09:24:48
FlexとかSilverlightには逃げないのですか?

666:デフォルトの名無しさん
08/03/25 12:04:28
既存スキルを生かせるのは強いよな。
あとシリアライズしてオブジェクトの受け渡しができるってのも強みか。

667:デフォルトの名無しさん
08/03/29 05:12:06
Java Web Startでええやん

668:デフォルトの名無しさん
08/04/07 01:16:15
>>666
日本語でおk

669:デフォルトの名無しさん
08/04/07 06:30:34
シュワシュワワワシュワワシュワ?

670:デフォルトの名無しさん
08/04/14 20:31:00
Struts2で、struts.xmlの一部をこんな感じ可変にできますか?
<result name="success">/○○.jsp(login.jsp等)</result>
可能であれば、どうやって値をセットすれば良いかご教授ください。

671:デフォルトの名無しさん
08/04/14 22:31:19
<result name="success">${ '/' + page + '.jsp' }</result>

getPageって言うメソッドをアクションに作ってそこで適当な "login" とか返してあげればOKだよ

まあ、login とかを処理したいのならアプローチが間違ってるけどね

672:デフォルトの名無しさん
08/04/14 23:28:16
>>671
ありがとうございます!
確かにloginは処理しないです;
本当に助かりました。明日早速試してみます。

673:671
08/04/14 23:37:09
いえいえ。

差し支えない範囲でどんな使い方をするのか教えて!

674:デフォルトの名無しさん
08/04/14 23:50:48
>>671,673
うーん、きっとまたアプローチが違うって突っ込まれそうですが・・・
帳票をPDF形式で出力させます。
PDF名が固定だと、複数ユーザが同時に出力しようとした場合に
不具合が起きるんじゃないかな?と考えて、PDF名+時間とかをくっつけて
出力しようとしていました。

675:デフォルトの名無しさん
08/04/14 23:56:07
そんなことできるの?

676:671
08/04/15 00:02:23
むむむ。resultのDispatch先の名前はURLに出てこないから関係ないのでは?
たしかに突っ込みたいです ^ ^

まあガンバッテ。 ${ } の中に書いてあるのはJSPに書くのと同じOGNLでValueStackも同じだから色々できるよ

677:674
08/04/15 00:02:34
PDF作成とresult部分は固定でなら実現してます
(PDF作成にはbirtを使用)
なので、多分出来ると思います。

ただ、このままだとPDFがサーバにわんさか作成されちゃうんですよね。。
タイミングを計って、PDFを削除しなくてはならなくなっちゃいますね。。
ダウンロードではなく、ブラウザにPDF表示させなくちゃいけないので
こんな面倒なことやってます。

678:674
08/04/15 00:05:44
追記で・・・
PDFは、画面の選択条件から動的に作成しています。

突っ込み大歓迎です!もっとスマートなやり方があれば
是非乗り換えたいです!

679:671
08/04/15 00:17:36
application/pdf のコンテンツタイプのhttpヘッダーでpdf内容そのまま出力すればいいんでないの?

一時ファイルはいらないと思うんだけど。birtも知らないし勘違いだったら失礼。

680:674
08/04/15 00:27:53
薄々感じてはいましたが、やはり一時ファイルは必要無いのですね・・・
servletを扱うこと自体が初めてで、他に聞ける人もおらず・・・
勉強不足を痛感しています。。本当にありがとうございます!

681:デフォルトの名無しさん
08/04/15 00:55:57
すいません。Strutsというか、Javaの質問になってしまうかもしれないのですが
<input type="text" name="aText" value="">
と書いたHTMLのaTextの値を、StrutsのFormで取得するにはどうすればよいでしょうか?
なんか、FormクラスにString aText;と書いておいてgetAText()やっても値が入っていないんです。

<input type="text" name="atext" value="">と書いて、
String atext;と書いてgetAtext()だとOKなんですが・・

682:デフォルトの名無しさん
08/04/16 19:35:05
よろしくお願いします。

Struts2のインターセプターで、RequestAware、ApplicationAwareというのは
どんな時に使えば便利なのでしょうか?

683:682
08/04/16 19:40:01
すいません、スコープというものを分かっていませんでした。
というか、スコープの説明を見てもピンときません。。

684:デフォルトの名無しさん
08/04/16 21:05:25
>>683 なるべく使わないようにするのが良いStruts2アプリの一歩

685:デフォルトの名無しさん
08/04/24 14:32:40
struts初心者なのですが、ちょっとつまづいてしまったのでご教授お願いします。
DynaActionFormを使っている際の質問です。

たとえば、struts-configで
<form-beans>
 <form-bean name="formA" type="org.apache.struts.action.DynaActionForm" >
 <form-property name="a" type="java.lang.String"/>
 </form-bean>

 <form-bean name="formB" type="org.apache.struts.action.DynaActionForm" >
  <form-property name="b" type="java.lang.String"/>
 </form-bean>
</form-beans>

<action-mappings>
 <action
   name="formA" path="/pathA" scope="request" type="actionA">
   <forward name="success" path="/mainA.jsp" />
 </action>

 <action
   name="formB" path="/pathB" scope="request" type="actionB">
   <forward name="success" path="/mainB.jsp" />
 </action>
</action-mappings>
というような場合、actionBクラスでformAを使い、aの値を取れたりするのでしょうか?
色々調べてみたけれどよく分かりませんでした。
もし、方法があるのならご教授ください。


686:デフォルトの名無しさん
08/04/24 18:25:42
Struts2のプロパティファイルをpropertiesではなく、
XML形式で記述できますか?

やり方がわからなかったんですが、できそうな気がするので。。
今は自分でjava.util.PropertiesのloadFromXML使って
XMLを読んでますが、もっと簡単にできないものかなと。。

687:デフォルトの名無しさん
08/05/09 18:28:12
struts.propertiesに入れる項目ならたぶんこうしておけば
struts.xmlに入れておける。ただファイルを一つに出来ると言うだけで
階層化できないのであんまり意味無いけどね

<struts>
<!-- SpringFramework integration -->
<constant name="struts.objectFactory" value="spring" />
<constant name="struts.objectFactory.spring.autoWire" value="type" />

688:デフォルトの名無しさん
08/05/13 10:24:17
スレ違いかもしれませんが、よろしくお願いします。
Struts2を使用しています。
submitボタンをクリックすると、javascriptで確認メッセージを出し、
OK→次の画面
キャンセル→処理をキャンセル、画面遷移無し
という風に処理させたいのですが
<s:form>
  <s:submit value="追加" action="hoge_add" onclick="return add();" />
  <s:submit value="更新" action="hoge_upd" onclick="return upd();" />
  <s:submit value="削除" action="hoge_del" onclick="return del();" />
</s:form>

javascript
function add(){

if(confirm('追加します。よろしいですか?')){
//OK
var frm = document.getElementsByName('hoge')[0];
document.frm.submit();
return 0;
}else{
//キャンセル
return 1;
}

}

このように書いてみたのですが、OK、キャンセルどちらのボタンを押しても
次の画面に飛んでしまいます。。どうすればよいのでしょうか?

689:688
08/05/13 11:04:20
自己解決しました。お騒がせしました。

690:デフォルトの名無しさん
08/05/13 22:40:26
>>689
情報量がゼロの書き込みはしなくていいよ。
首くくって死ね。

691:デフォルトの名無しさん
08/05/13 22:40:51
今日の恥ずかしい体験を心に刻め
その気持ちが貴方を育ててくれるハズ...

692:デフォルトの名無しさん
08/05/14 03:27:41
>>690
ところで、おまえのその書き込みは情報量がゼロじゃないのか?
首くくって死ね

693:デフォルトの名無しさん
08/05/14 19:32:31
>>689
自己解決した場合でもどこが間違っていたのか書いておけば
後々人の役に立つかもよ。

キャンセル時のreturn 1をreturn falseにしたら直ったとか?

694:デフォルトの名無しさん
08/05/17 11:38:05
ひがです。

Seasar2の後継プロジェクトとしてSlimを申請します。
SlimはかつてはSeasar3(?)と呼ばれていたものです。
詳細は、Seasarカンファレンスで発表します。

# 開設プロジェクトに関する情報
プロジェクト名:Slim
一覧に記載する簡単な説明:
"Less Is More"をコンセプトに持つ、フルスタックフレームワーク。
所属するトップレベルプロジェクト名:Sandbox.java
リーダアカウント名: higa
希望サイトアドレス: slim.sandbox.seasar.org
Maven用groupId: org.seasar.slim

よろしくお願いします。
URLリンク(ml.seasar.org)

695:デフォルトの名無しさん
08/05/17 13:12:48
>694
スレ違い

696:デフォルトの名無しさん
08/05/17 13:46:12
strutsをベースに業務フレームワークを作る仕事を担当する
かもしれません。オススメな書籍って何かありますか?



697:デフォルトの名無しさん
08/05/17 14:20:54
今頃そんなことする会社は辞める

698:デフォルトの名無しさん
08/05/17 14:38:55
>>685
試してないですけど、actionAの中で、formAをセッションコンテクストに登録し、actionBで、セッションコンテキストからformAを取り出せば使えるのでは?
別案として、もしstruts-config.xmlを変更できるならば、actionAのformAのscopeをセッションにしておけば、actionA内でformAをセッションに登録する処理は不要になると思われ。
ちなみに激しく亀レスと、自分で言っておく。

699:デフォルトの名無しさん
08/05/17 15:42:59
Struts2のJSPをサブディレクトリにまとめたいと思っています。
例えば機能AのJSPは、/jsp/a/に、機能Bは/jsp/b/に置きたいのです。

なるべくZeroConfigurationに近づけたいので、
できるだけ記述(XMLやアノテーション)が少ない方法がいいのですが
何かまとめて設定する設定方法は無いのでしょうか?

700:デフォルトの名無しさん
08/05/20 01:09:13
struts2で<s:textfield...に属性を追加しようとしています。
struts2のTextFieldを派生したクラスを作って、
独自のTextFieldTagから呼び出してaddParameter()を呼び出してるのですが、
生成されたhtmlにこの属性が反映されていません。

デバッガで追って、Component#addParameter()で拡張属性が
parameterにputされてるのは確認したんですが、なにがいけないんですかねえ。
ちなみに追加しようとしているのはistlyle等です。

今更ながらstruts2を使ったことを後悔

701:デフォルトの名無しさん
08/05/20 01:21:19
ftlのテンプレートに書かれていないんじゃないの?

てか componentタグでスクラッチから出力した方が面倒なくね?

702:デフォルトの名無しさん
08/05/20 01:34:25
一応TextFieldの派生はやめてUIBeanの派生でやってみたんだけど
同じ結果だった。Componentからスクラッチだと属性多すぎない?

今ftlをググリ中

703:デフォルトの名無しさん
08/05/20 01:40:43
全部の属性インプリする必要あるの?

ftlは出力テンプレートの拡張子ね
多分 templates/simple/text.ftl


704:デフォルトの名無しさん
08/05/20 01:46:20
それは見つけたんだけど、
自分で属性を追加したい場合に参考になるURLとかある?
とりあえずクラスパスにおいてみたんだけどどうにもならん。

そりゃあ全部の属性は必要ないんだけど、後でcssStyleとか
必要になってから困るのも嫌だし。textfieldかUIBeanの派生にしたい。
というか、s2タグやめたい

705:デフォルトの名無しさん
08/05/20 01:49:47
よくみんなこんな設定ファイルやアノテーションの海を泳いでいられるな
なんかまだスパゲッティコードの方が順番に処理が負えるだけマシな気がしてきた

706:デフォルトの名無しさん
08/05/20 01:52:07
判っちまえば、こんなパラダイスねーけどな

707:デフォルトの名無しさん
08/05/20 02:00:38
俺には無理っぽいからComponentから自作することにする。
自作するときはページレンダリングなんて一種類しか使わないし、
ComponentTagSupportとComponentに分かれてるより、
JSTLのdoStartTag()でゴリゴリ書く方が楽じゃね?

708:701
08/05/20 02:11:40
Componentを拡張して。。って話じゃないよ
それなら textfield拡張したほうがいいでしょ

俺のは s:component タグの話ね、念のため

709:デフォルトの名無しさん
08/05/20 02:17:53
どっちもorg.apache.struts2.components.Componentじゃないの?
とりあえずそこから最低限の機能で作って行ってるんだけどmaxlengthとか
labelとかやっぱりいろいろ要りそうだなあ。

onXXX系を除いて、ftlを使わない方法で実装し直してる感じ。
すごおおおおおく無駄な気がする。

710:デフォルトの名無しさん
08/05/20 02:44:52
>>706
パラダイスっていうならftlの追加方法教えてくれよ(泣

>>708
そのtextfieldの拡張の仕方がわからんのでつまづいとるんだわ

711:デフォルトの名無しさん
08/05/21 13:08:19
そうそう、画面遷移の変更はそんなにないだろうし、
Actionのアノテーションに遷移書くようにすれば
ソース変更もそのActionだけにすることが可能で、わざわざ設定ファイルをいじらんでも。。ということだよね。

しかし未だにアノテーションで記述できずに、struts.xmlに書かないと動かないのもある。

そういえば、この前小規模案件のキット作り頼まれて、
「Strutsって設定ファイルの競合とか大変なんですよー」と泣きつかれたのを受けて、
可能な限り設定ファイルを分割+SubVersion管理にして競合起こさないようにしたら
今度は「ファイル多すぎですよー」とかくらいしか文句出なかった。
小規模でも分割大事だね。

712:デフォルトの名無しさん
08/05/21 23:12:02
iFitって使ってる人居る?

713:デフォルトの名無しさん
08/05/22 00:51:45
何だっけ?
東京方面で使わされるヤツだっけ?

714:デフォルトの名無しさん
08/05/22 01:01:13
struts2で<a href="...にactionのURLを入れたい時ってどうするの?
<a href="<s:url action="input" />">aaa</a>
こんな風にHTML属性の値の中にsタグ入れるのはかっこわるすぎるよね。
<s:a>タグをみててもわからないんだけど

715:デフォルトの名無しさん
08/05/22 09:01:31
URLリンク(struts.apache.org)

<s:url id="url1" …>で遷移先つくって
<s:a href="%{url1}">

JSP2.1使ってたら無理。


716:デフォルトの名無しさん
08/05/22 09:41:53
>>700
ちょっと時間があったのでやってみたんだけど

ftlを変更、tld追加したら、今度は追加した属性のsetterが見つかりません、、と嫌になるねぇ。



717:デフォルトの名無しさん
08/05/22 14:04:37
さんくす

英語のドキュメントも最後まで読まないといかんな

718:デフォルトの名無しさん
08/05/22 14:06:34
>>716
そこまで来たらTextFieldの派生クラスにその属性のsetter/getter
用意するだけじゃないの?

ftlを変更ってstruts2のjarの中のファイル?
自プロジェクトで新規にftlファイルを作って、
それを読み込ませる方法がわからないんだけど


719:デフォルトの名無しさん
08/05/22 16:07:28
struts2を使っています。
画像表示とかのアクションで、使用してるライブラリの関係上
responceに対して直接書き込んじゃうのでjspに
遷移したくないんだけど、こういう時はどうするのがstrutsらしいの?
とりあえずアノテーションで
@Result(name = "success", value = "")
としておいて、
return SUCCESS;
してみようかと思うんだけど。

アクションにしないで直接サーブレットにすべきなのかな。

720:デフォルトの名無しさん
08/05/23 06:19:37
return NONE;
にしたらできた。
Actionインターフェースみたらわかった

721:716
08/05/24 12:21:01
>>718
ちょっとぐぐると出てきた>テンプレート読ませる方法

なんかカナリめんどくさいなー、、、これ。
例えばTextareaタグを拡張(istyle属性を追加)するとして…
Textareaを拡張したUIコンポーネントクラス(ExTextarea)とタグクラス(ExTextareaTag)を作る。

拡張タグのテンプレートファイルを以下のルールで作成する。
ファイルは、{クラスパス}/template/{拡張テンプレートテーマ名}/**.ftl
例えば、theme="extend" とする場合は、{クラスパス}/template/extend/textarea.ftl

次は、Strutsタグ拡張なので、タグライブラリも追加する。

拡張タグクラスは次の実装が必須。
・追加した属性名のgetter/setter
・populateParams()をオーバーライド。親の同メソッドを実行。
・getBean(ValueStack , HttpServletRequest , HttpServletResponse) を継承

拡張したUIコンポーネントクラス
・引数つきコンストラクタを作成。
・追加する属性と、setterを作成
・setterに@StrutsTagAttributeアノテーション追加
・evaluateExtraParams()をオーバーライド&親実行。
追加する属性を判定し、addParameter("属性名" , findString(属性))を記述
つづく

722:716
08/05/24 12:21:49

ftl
textareaタグの中であればどこでもいいので、
<#if parameters.{属性名}?exists>
{属性名}="${parameters.{属性名}?html}"<#rt/>
</#if>
を追加

tld:
既存Struts2TLDを一部拝借(textareaのtag要素から引用+istyle属性分の定義を追加。)

JSP&web.xml
追加したStrutsタグを宣言

順番にないものを潰していくだけなので難しくはないんだが…
激しくめんどくさいな〜。
書いてて思ったんだが、拡張のサンプルソースキット提供の方が判りやすいね。

723:デフォルトの名無しさん
08/05/24 18:14:30
>>721
サンクス。ググったけど自分で拡張する方法が見つからなかったんだよね。
ftlで定義した"extend"をどこで使うのかと思ったけど
UIコンポートネントクラス#getTemplateDir()かgetDefaultTemplate()で
return "extend"しないと駄目だよね?

しかしこの面倒くささは、将来違う人が保守することを考えると導入をためらうね。
普通のstrutsタグですらJSTLにすべきか悩んでたのに



724:デフォルトの名無しさん
08/05/24 19:10:37
Frameworkの高機能化が進むと、拡張作業は複雑化せざるを得ないのかもね

725:デフォルトの名無しさん
08/05/24 19:45:41
>>699
@Resultも書きたくないってこと?
それなら@Namespaceかなあ
@Namespaceをpackageで一括指定することは可能だけど
各Actionで@ParentPackageは必要。
でもこれはまっとうなアプリ作ってれば定義してるよね。

@Namesapceを"/a"にすると
actionへのアクセスも/a/XXX.actionになる。
jspは/a/XXX.jsp

さらにjspのトップディレクトリを指定する方法はなんかあるのかなあ




726:デフォルトの名無しさん
08/05/24 20:05:36
ちょっとstrutsから外れちゃうけど、jspを/WEB-INF/jsp/配下に
置くのってそんなにメジャーじゃないのかな。
Actionを通さないで直接jspを呼ぶようなシステムってそんなに
ないでしょ?PHPじゃあるまいし。
ほとんどのjspはユーザーに直接アクセスされたくないから
WEB-INFに置いてるんだけど、index.jspとかは直接アクセスにしてるから
拡張子*.jspを禁止することはできない。
Eclipse+WTPで開発してると、/WebContent/WEB-INF/jsp/xxxとなって
階層が深くてアクセスしづらい。これは回避策見つけたけど。

>>725の@NamespaceもWEB-INF配下に置くってのは想定されてない
みたいだし、一般的にはコンテキストルートにjspを置くのが普通なのかなあ


727:デフォルトの名無しさん
08/05/24 20:25:05
>>724
というかまだ過渡期だから、進化の方向がちょっと間違ってると思うよ。
暗黙の了解が多すぎるのはグローバル変数多用と同じ害がある。
あれだって、どんなグローバル変数があるか、値を変更するときの
ルールはなにかっていうのが明確になってれば問題は無いわけだけど、
変数が多くなってくるとそうもいかない。

struts2ではWorkflowInterceptorでexclude宣言したメソッドなら
validate()が呼ばれないからinput()では呼ばれないけどexecute()では
呼ばれる。ほぼすべてのActionでの共通機能だから一カ所に
定義できて確かに便利。でもValidateInterceptorとの関連はどうで、
doExecuteValidate()を実装したらexecute()専用のvalidate処理が定義できて、
execute()直前のアノテーションでも定義できて、各フィールドでも定義できて・・・
っていうルールをすべてのアクションの開発者が知っていないと
ソースの解読すら大変、っていうのはちょっとね。

Java経験豊富でもstruts2経験の無い人に、このアクション修正してって
頼む前に教えないといけないことが多すぎる。

728:デフォルトの名無しさん
08/05/24 20:52:35
>>726
俺はWTP捨ててノーマルEclipseとMaven2でやってるよ。
普通にデバッグもできるしな。
WTPって長い歴史の割には未だになんかいまいちだし。

729:デフォルトの名無しさん
08/05/25 04:11:26
>>715
auのケータイがCacheコントロールを無視するので、毎回アクセスするURLが
変わるように<s:url>を拡張してdoEndTag()で毎回ユニークなURLに
なるようにパラメータつけてたんだわ。これなら戻るボタンの時に
通信発生しないで快適だし。

でもその独自パラメータもidに含めるためには、textareaみたいに
テンプレートから拡張しないといけないのかなあ

730:716
08/05/25 10:18:52
>>728
こういう手もある。

Maven2でWebキット作成→さらにmaven2でWTP用プロジェクトを生成する。
デバッグ作業や稼働確認が簡単にできるのでウチではWTPは重宝してる。

>>729
一回作ってしまえば、後は悩まず作れる…調べるのが面倒なんだよね。
修正箇所が多いのがめんどいだけ。

しかしsタグ(sxタグ)拡張して便利になるのを作ろうとすると大変だねー
慣れなのかな、やはり。

ちなみに、ウチでは、JSTLとStruts1タグ、JSP2.0をごっちゃにしちゃってる人がかなり多い。
その上、Struts2タグ+OGNLなんか出てくると、
「今度は一体どれで書くのが正しいんだ!」ってなってる人多いよ…

731:デフォルトの名無しさん
08/05/25 16:13:09
今、プロジェクトでstruts2+springを提案されてて、
試しに作ってみたんだが、どうみてもseam(JSF+Ejb)の方が使いやすいんだが
seamと比べてstruts2のメリットってなんだ?


732:デフォルトの名無しさん
08/05/25 16:23:31
Strutsという名前

733:デフォルトの名無しさん
08/05/25 16:25:12
まあ、名前だろうだろうな。
seamの方が使いやすいとは漏れも思うよ。

734:デフォルトの名無しさん
08/05/25 16:42:03
>>732 >>733

名前だけかORZ...

735:デフォルトの名無しさん
08/05/25 21:07:39
新規開発案件でもまだStruts?
ポストStrutsの決め手がない現状では仕方ないのかな・・・

736:デフォルトの名無しさん
08/05/26 11:05:06
>>730
OGNLやValueStackで任意の変数にアクセスして、
<s:property id="">で埋め込んだりするくらいなら
スクリプトレットでよくね?JSTLで基本的な整形をして、
拡張が必要なときだけスクリプトレットで値をいじってから
JSTLに渡す、みたいな。

taglibに限定するメリットって
1.ソースが見やすくなる
2.ビジネスロジックが紛れ込むのを排除できる
っていう2点だと思うんだけど、教育コストに見合わないよ。
へぼいPGの場合は2に限らずコードレビューしてプロジェクトの
ルールに則ってない場合は手直しさせるから、jspだけそういう
制限があったところで大差無いし。



737:デフォルトの名無しさん
08/05/26 11:06:47
>>731
「どうみても」なのはseamに慣れてるからじゃないの?
WebサーバーとAPサーバーが分かれてるプロジェクトで
seam導入しようとしたとき、アノテーション地獄でなかなか
理解できなかったよ。便利そうとは思ったけど。

738:デフォルトの名無しさん
08/05/26 11:36:10
JSP&Servletが最強です。

739:デフォルトの名無しさん
08/05/27 03:13:47
struts2のタグで、値をDoubleで持っていてjspで
DecimalFormatでフォーマットして出力するのはどうするの?
<s:property id="">で代入して表示?
みんなはActionで文字整形までやってるわけ?

740:デフォルトの名無しさん
08/05/27 13:06:10
jstlで

741:デフォルトの名無しさん
08/05/27 19:31:29
こんなのを見つけた
URLリンク(www.toshiki.net)

後々のメンテを考えたらJSTLの方がいいと思った

742:デフォルトの名無しさん
08/05/27 23:00:37
>>737
確かにseamには慣れてるけど、比較対処が簡単なlogin画面で明らかにコーディング量が違っていたよ。DBアクセスの為のBean作成やログイン後の情報を保持する部分とか。
struts2に慣れればもっと良い書き方が出来るのかもしれないが
アノテーションはXML地獄よりは確実にましだと思うんだけどな
確かにおっちゃん連中はついて来るのが大変そうだった


743:デフォルトの名無しさん
08/05/27 23:08:47
DBアクセスはstruts2/springの範囲外だからそこで比べても。
アノテーションとxmlは一長一短だけど、そこそこの複雑さの場合は
アノテーションの方が記述が分散する分学習が面倒だと思う。
xmlでいろんなライブラリ導入してxmlファイルがあちらこちらに
あってそれぞれの役割がよくわからないのが一番ひどいけどね。
アノテーションなら定義クラスにすぐアクセスできるけど
(Eclipseとか使って無くてもimportとアノテーション名を見ればわかる)、
xmlだとそもそも誰が読んでるのかすらわからないし


744:デフォルトの名無しさん
08/05/27 23:53:30
>>742
ログイン認証処理なんて、spring security使えば楽チンだよ

745:デフォルトの名無しさん
08/05/28 01:44:58
Strutsと直には関係ないだろうけど、オマイらメールのテンプレート処理とかなに使ってやってんの?

746:デフォルトの名無しさん
08/05/28 01:54:25
>>745
自前でstr.replaceAll(key,value)

747:デフォルトの名無しさん
08/05/28 01:55:22
駄目だ。struts2のタグは応用効かなさすぎ。
俺はstruts2をやめるぞジョジョォォォオオオオオ

748:デフォルトの名無しさん
08/05/28 01:59:03
>>747 そ、、、、そうかー???

使う側の応用力の問題ジェネーーーーーーーーノーーーーオオオ

749:デフォルトの名無しさん
08/05/28 02:00:39
てかOGNLって何でも出来すぎてあとでメンテで困るんじゃねーー
って感じなんだけど。

750:747
08/05/28 02:51:58
ValueStackはうまくいってるときは便利で強力だけど、
「望みの値が出ない」ときにどこが間違ってるのか検証するのが面倒。
struts2のComponentTagSupport系のタグだと処理が追えない。

751:デフォルトの名無しさん
08/05/28 20:36:17
ajaxとstrutsの相性ってどうなんですかね。
styleId属性使うんだろうけど。

752:デフォルトの名無しさん
08/05/28 22:24:38
名前忘れたけど、選択リストが複数出てくるGUI部品は内部でAJAX使ってたよ

753:デフォルトの名無しさん
08/05/29 22:08:43
EventDispatchActionってボタンによってjavascriptのvalidation切り替えたりできない?

754:デフォルトの名無しさん
08/05/29 23:35:55
>>745
Velocity

>>749
その通り。
もし使用に耐えられるのであれば、JSONプラグインを使ってAJAXタグと組み合わせるのも良いかもしれない。

>>751
2.0系はdojo0.4が同梱。
しかしdojoの現リリースと大きく離れていて、かつ欲しいのがあったりして困る。

>>752を補足すると、AJAXタグはそこそこある。
タブパネル、オートコンプリータ、ツリーパネルなども。

ちなみに、Struts2.0系で何か作ってる連中はとりあえず2.0.11.1にしておきましょう。
s:aタグがトンデモない状態だった。

755:デフォルトの名無しさん
08/05/30 03:04:08
>>753
EventDispatchActionは知らんけど、
Struts1.1でやったよ。


756:デフォルトの名無しさん
08/05/30 05:14:42
ELでMap#get()を呼び出したいときはどうしたらいいでしょうか。
${map.get(key)}だと
「デフォルトの名前空間が指定されていない時には、関数 get はプリフィクス付きで使用しなければいけません」と出ます。

OGNLなら%{map.get(key)}で取り出せるんだけど。
s2のタグにformatNumberがあればEL式と併用しないでいいのになあ

757:デフォルトの名無しさん
08/05/30 06:46:53
${map['key']}
keyが変数なら ${map[key]}
ちなみに、「key」が実際のkey名でプロパティ名として使える場合は
${map.key}でもOK
JavaScriptの連想配列アクセスに似ている

758:デフォルトの名無しさん
08/05/30 10:10:56
>>753
form分けろ

759:デフォルトの名無しさん
08/05/30 10:31:52
>>756 S2タグとELの混在利用なんてとんでもない間違い

760:デフォルトの名無しさん
08/05/30 14:38:00
>>759
じゃあ数値フォーマットはどうやんのさ?
いちいち>>741みたいにフォーマット外だしにして
メッセージフォーマット使うの?

761:デフォルトの名無しさん
08/05/30 14:46:08
>>757
ありがっとさん。
ママ、僕にも出来たよ

762:デフォルトの名無しさん
08/05/30 15:20:34
struts2のタグが生成するxhtmlをhtmlにする方法ありますか?
<constant name="struts.ui.theme" value="simple" />
としてもxhtmlみたいなのですが。

古い携帯にも対応したいのでhtmlにしたいんです。


763:デフォルトの名無しさん
08/05/30 16:47:48
s:iteratorで見てるカレントオブジェクトとその上のactionとか
requestで同じ変数名を使ってるときに、上の方を参照するには
どうするんだっけ?

どこかのwebサイトで見かけたんだけどなあ。どこだったっけなあ

764:デフォルトの名無しさん
08/05/31 19:27:17
>>760
数値フォーマットはJSTLでいいんじゃない?
S2タグにあっても良さそうなんだけど、fmtないんだよね〜

765:デフォルトの名無しさん
08/05/31 23:10:37
>>764 JSPファイルはきっとぐちゃぐちゃだなww

766:デフォルトの名無しさん
08/06/01 03:18:28
>>761
ボク、りっぱになったわね
大き過ぎて口に入らないわ

767:デフォルトの名無しさん
08/06/01 09:48:32
>>765
どうやったらそこまでぐちゃぐちゃになるんだ…?

768:デフォルトの名無しさん
08/06/03 00:04:36
>>728
お前は俺か。Maven最高。pomがちょいアレだけど。
WTPマジうんこ。

769:デフォルトの名無しさん
08/06/03 00:22:06
MavenもWTPも両方使うだろJK

770:デフォルトの名無しさん
08/06/03 08:18:22
struts2で
■■■■■
上記の様に複数の画像をサブミットボタンとして並べると画像間に隙間が空いてしまいます。
調べてみたのですが回避する方法見当たりませんでした。
隙間を開けずに画像を並べる方法ありましたら教えて下さい。



771:デフォルトの名無しさん
08/06/03 14:18:34
>>769
WTPは別に無くてもいいだろう。
デバッグもこの方法ならWTPじゃなくても問題ないよ
URLリンク(goodjob.boy.jp)

772:デフォルトの名無しさん
08/06/03 15:29:17
>>768
maven スレは過疎っているので、暇なときに遊びに来てください。
自分は maven はそれほど万せーでもないけど(微妙にめんどう)

773:デフォルトの名無しさん
08/06/03 15:32:18
>>771
jetty って jsp 動かせるの?


774:デフォルトの名無しさん
08/06/04 00:13:43
>>771
Maven Eclipse PluginでWTPプロジェクト作成した方が楽だと思うw

775:デフォルトの名無しさん
08/06/04 00:22:32
今ならQ4Eだろ

776:デフォルトの名無しさん
08/06/04 17:47:46
NetBeans使えばいいだけじゃねぇの?

777:デフォルトの名無しさん
08/06/04 18:17:11
それはない

778:デフォルトの名無しさん
08/06/04 20:42:18
WTPとは比べ物にならないよ。

779:デフォルトの名無しさん
08/06/04 22:39:24
>>770
無理。

780:デフォルトの名無しさん
08/06/05 11:44:42
あれ、JSTLのfmtタグってリクエストヘッダみて挙動変えるのか。
DoCoMoだとformatNumberがきかない。つかえね。auは大丈夫なのに。
fmt:setLocaleしても駄目だなあ。なにが足りないんだろ。結局カスタムタグか。

リクエストヘッダからfmt:messageでとってくるプロパティファイルは
setLocaleで変えられるんだよね?

781:デフォルトの名無しさん
08/06/05 17:09:53
>>780
それはDocomoだとロケール情報をHTTPヘッダに持ってないってことなのか?

実際に取得したロケールの値と、プロパティファイルの接尾名が合致してないというオチは結構ある。
例えば、言語コードと国コード両方だと思ったら、片方しかないとか。

782:デフォルトの名無しさん
08/06/05 18:51:17
>>781
うん、GETだとhostとuser-agentしか入ってない。機種はSO902i。
他の人のDoCoMoでも駄目だった

783:デフォルトの名無しさん
08/06/06 00:41:40
>>782
だったらもう、Action側でロケール上書きで付けるしかないのかな。

784:デフォルトの名無しさん
08/06/06 00:48:46
web.xmlのcontext-paramにjavax.servlet.jsp.jstl.fmt.fallbackLocaleとかはセットしてる?

785:デフォルトの名無しさん
08/06/06 03:27:02
してない。
<fmt:setLocale value="ja_JP"/>を入れて駄目だった時点で
これ以上時間を浪費したくないからカスタムタグ書いた。


786:デフォルトの名無しさん
08/06/06 08:41:47
もし簡単に試せる環境があるのなら、

<context-param>
<param-name>javax.servlet.jsp.jstl.fmt.locale</param-name>
<param-value>ja_JP</param-value>
</context-param>
<context-param>
<param-name>javax.servlet.jsp.jstl.fmt.fallbackLocale</param-name>
<param-value>ja_JP</param-value>
</context-param>
<context-param>
<param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
<param-value>{リソースバンドル名}</param-value>
</context-param>

これセットしてどうか試してみてくれない?
setLocaleやbundleを個別に書く必要はない

787:デフォルトの名無しさん
08/06/06 11:32:58
えー
それを開発環境に入れるのは楽だけど
カスタムタグに変えたところを戻して
外からアクセスできるところにデプロイしなおすのは面倒

と思ったけど手元にエミュレータがあったのでやってみた。
ちゃんとフォーマットされたよ。ちなみにauは"ja-jp"で送る
みたいだね

788:デフォルトの名無しさん
08/06/06 21:12:05
ありがとう
携帯用画面の開発では結構ありそうなパターンだったから確認しておきたかったんだ
参考になったよ

789:デフォルトの名無しさん
08/06/07 09:29:18
カスタムタグにすればOGNLに統一できるし悩ましいところだな

790:デフォルトの名無しさん
08/06/07 14:21:32
しかしこれはいい事例だね。俺も作ってみるか…

791:デフォルトの名無しさん
08/06/11 22:06:57
struts2で、session.invalidate()を読んだ後ちゃんとrequest.getSession(true)で新しいセッションを作らせてから、
ActionChainResultで別画面に遷移させると「セッションが無効」の
エラーがでます。おそらくInterceptorでセッションインスタンスを
キャッシュしてるせいだと思うのですが、追い切れていません。
logout時のinvalidate()は普通に成功しています。

login時にはsessionIdを発行し直して、かつリロードで
再度ログイン処理が走らないようにリダイレクトさせたいと
思っているのですが、なにか回避策はあるでしょうか。

sessionIdの発行し直しはセキュリティ会社に指摘されたことが
あって、ログイン前の無防備な状態でid盗聴されたらログイン後に
乗っ取られる可能性があると。今回の案件では始めから
httpsなのでやらなくてもいいかなとは思っているのですが、
できたらやっておきたいなあと。

792:デフォルトの名無しさん
08/06/14 18:39:32
>>791
答えではないけれど、
Struts2ではsession.invalidate()は避けてほしいらしい。
URLリンク(struts.apache.org)

ちなみに、Struts1+Tiles利用時にsession.invalidate()→レスポンス吐く前に
sessionを新規作成しようとしても、うまく動かない現象は起こる。

理由は、セッションを破棄すると、そのロケール情報もなくなってしまって
ロケールによる自動振り分けが失敗する。

ロケールなしの時の設定をしていても動かず、
セッション破棄→新セッション作成後にロケールを追加すると動いたので
そういうのが原因だろうかね。

793:デフォルトの名無しさん
08/06/15 00:58:09
sessionをプレゼンテーション層的観点で皮相的にとらえると上手くいかない。
自分もstruts2とacegisecurity(spring security)を組み合わせたカスタマイズで苦労した。


794:デフォルトの名無しさん
08/06/22 07:53:02
HTTP Status 503 - サーブレット action は現在利用できません

--------------------------------------------------------------------------------

type Status report

message サーブレット action は現在利用できません

description The requested service (サーブレット action は現在利用できません) is not currently available.


--------------------------------------------------------------------------------

Apache Tomcat/4.1.24


というエラーが出るのですが、原因としてはどのようなことが考えられるでしょうか?
tomcat 4.1.24
jre 1.50
struts 1.22

です。ご教授いただければありがたいです。

795:デフォルトの名無しさん
08/06/22 14:16:47
あげときます

796:デフォルトの名無しさん
08/06/22 15:30:42
よろしくお願いします。

Struts2で、iteratorタグを使用しています。

<s:form>
<s:iterator value="hogelist">
  <s:property value="no">
<s:textfield name="hogelist.get(%{no}).hoge" value="%{hoge}" />
</s:iterator>

<s:submit action="hogeaction" value="送信" />
</s:form>

上記のようにに作っていて、初期表示でデータを表示させることはできています。
送信ボタンを押してActionを呼び出したら、
hogelistの中にテキストフィールドで入力した値が入っていることを望んでいるのですが、
データを取得することができません。

nameの書き方が悪いのでしょうか?それともこういった使い方はできないのでしょうか?
どうかご教授ください。



797:デフォルトの名無しさん
08/06/22 15:37:40
えー、マジTomcat4?今時許されない

798:デフォルトの名無しさん
08/06/22 15:49:56
なんかの保守じゃねえの?

799:796
08/06/22 17:30:06
>>796

name="hogelist.hoge"でいいんだぜ

800:796
08/06/22 17:47:08
>>796
ごめん、嘘ついた。
データは取得できるけど、名前が重複して変になる。

801:デフォルトの名無しさん
08/06/23 16:42:05
>>794
エラー画面だされても意味がわからんので、リクエストしてるURLとエラーが出てるログファイルから判断しろ。
話はそれからだ。

>>796
<s:iterator value="hogelist" status="idx">
と、イテレーションのループ変数を宣言、

<s:textfield name="hogelist[idx]" />
でいいんじゃないのかね。

ただ、そのままだとValidatorを使ったときに困ると思う。

802:796
08/06/24 09:45:20
>>801
ありがとうございます。泣く泣く固定の変数使ってやってました。
statusを使用するんですね。

<s:form>
 <s:iterator value="hogelist" status="idx">
 <s:textfield name="hogelist[%{#idx.index}].hoge" value="%{hoge}" />
</s:iterator>

 <s:submit action="hogeaction" value="送信" />
</s:form>

これでhogelistにデータを入れることができました。
Validatorは今のところ使用していないので、スルーの方向で。

スッキリ解決しました。お世話になりました!

803:デフォルトの名無しさん
08/06/25 16:27:56
>>801
有難う御座います。また出直します。

804:デフォルトの名無しさん
08/06/26 18:34:46
strutsにも飽きてきた。

strutsに代わるフレームワークってないの?
個人的にはwicket辺りに注目してるんだけどあんまり流行ってない?


805:デフォルトの名無しさん
08/06/26 19:03:04
>>804
作っちゃおうぜ

806:デフォルトの名無しさん
08/06/26 20:20:56
飽きたらカスタマイズか新作なんかね、wicketは日本で人気っぽいけど。
または自動生成ツールを作るとか、RIA側に手を出すか。

ちなみに、Struts2.2と2.5出るのって本気なのかね。

807:デフォルトの名無しさん
08/06/26 20:32:23
>>804
dolteng入れてTeeda使うと笑えるよ

808:デフォルトの名無しさん
08/06/27 01:50:54
>>806
2.2と2.5でどうなるの?

809:デフォルトの名無しさん
08/06/27 21:08:28
URLリンク(journal.mycom.co.jp)
らしい。つか、Guice入ってるような気がするんだが。。

810:デフォルトの名無しさん
08/06/28 02:12:13
>>809
springと離婚するのか?

811:デフォルトの名無しさん
08/06/28 02:15:57
AJAX対応とスピードアップってことだな、2.2は

812:デフォルトの名無しさん
08/06/28 10:57:13
2.0だとdojoプラグイン(でも0.4)が既にバンドルされている。
dojo1.0に対応するのか、それとも他も使えるといいんだが…

2.2以降が出るのを待つかなぁ。

813:794
08/06/28 14:17:11
リクエストしているURLは
URLリンク(localhost:8080)
です。
URLリンク(www1.axfc.net)
にアップロードした画面からリクエストされます。

ログファイルはC:\tomcat\logsにありますが、どれを挙げれば
よろしいでしょうか?

独学で聞ける人もいないので、このスレが頼りです。ご返信
いただければ幸いです。

814:デフォルトの名無しさん
08/06/28 15:13:00
特にヘンな設定していなければ、
ログファイルは、catalina.yyyy-mm-dd.out

Struts系の設定ファイルはきちんと書かれているか
- web.xmlにstrutsの定義があるか
- struts-config.xml
<form-beans>と<action-mapping>がきちんと設定されているか

基本的すぎる内容なので自分で調べまくる方がいいとは思うが。

815:デフォルトの名無しさん
08/06/28 15:13:27
ageときます

816:デフォルトの名無しさん
08/06/28 15:24:28
よろしくお願いします。

struts2を勉強しています。

propertiesファイルにUnicodeエスケープ形式で
メッセージを書くのが面倒なのです。
ツールやプラグインを使用していますが、

XML形式で書くと、日本語をツールなしに使えると伺いました。
書き方等教えていただけないでしょうか。よろしくお願いします。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4347日前に更新/258 KB
担当:undef