トップページphp
982コメント329KB

フレームワークStrutsをいじくり倒す人の為のスレ

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん03/04/28 08:14ID:Ub0n1fGR
 流行っているのか、流行っていないのか謎の Struts を語るスレです。
http://www.ingrid.org/jajakarta/struts/
http://jakarta.apache.org/struts/
0451nobodyさん04/08/15 00:38ID:???
>>450
ならjspだけ別で管理すれば?
お前の書き込みだけでは情報が少なすぎて
DQNプロジェクトだと言うことしか和下欄
0452nobodyさん04/08/16 02:46ID:???
拡張子変えないで、*.jsp にアクセス制限かければいいんじゃない?
0453nobodyさん04/08/16 19:53ID:9tlzA3M2
以下のような構成でWebアプリを作成しています。

・OS:Windows XP ・strus1.1 を使用 ・インタフェースはHTML で主に OracleDBアクセス
・開発ツール JDeveloper 9.0.3 ・システムは OC4J 配下で稼動

HTMLのテーブルタグの形式で一覧表示しようする
と特定の日付範囲のデータを表示させようとすると、
テーブルタグの一部しか表示されないときがありますた。

[処理構成]
一覧表示は JSPで記述。Strutsのカスタムタグを使用して
アクション部JavaBean にセットされたものを表示。

[調査]
・アクション側でJavaBean にセットされたデータをログ出力させて
 みたが特に問題はない模様。
・JSP側のタグなどもチェックしてみたが、問題はなさそうであるし
 そもそも実行時には 例外が発生しないので構文自体には問題なし。
実は他の掲示板でもそうだんしたところ
OC4J(← Oracleアプリケーションサーバ付属のサーブレットコンテナ)
のバグでコンフィグファイルの編集でいけるとのこと回答
をいただいたけど、、やっぱりそれでもだめでした。
他にも同じようにはまった人いませんか?
で、デバッガーなど調査するためのなにか良い方法が
ありましたら教えてくださ
い。
併せて、参考になる資料のURLなどもあればおしえてー
0454nobodyさん04/08/16 21:01ID:???
すとらつ関係ねーべ
0455nobodyさん04/08/16 23:07ID:???
>>453
問題の切り分けが下手くそな予感
0456nobodyさん04/08/17 00:00ID:???
>453
ああ、あれだ。JSPに表示するバイト数の制限オーバーしたんじゃねーの。

確かデフォルト8KBだった気がする。それ広げてみたら。
0457nobodyさん04/08/17 00:56ID:???
>>453
スレ違い。

商用製品使ってるんだからサポートに聞きなよ。
逆にサポート契約がないなら商用製品は使わない方がいいよ。
045845304/08/17 01:43ID:KSTk5Ht9
453です。
的外れな質問カキコにもかかわらず
アドバイスありがとうございます。

456様へ
そんな制限あったんですね。知りませんでした。
それやってみます。

457様へ
なんせこの手の開発はじめてなもんで、
どこかショボーイ抜けがあるオチがありそうな気が
して、サポートにヘルプまではという心境でした。
それに Oracle製品側じゃなくて 
struts側のバクってうたがってまして、、、
ここの切り分けが下手糞なんですかネーあぅ。

とりあえず、アドバイスいただいたことやてみます。

0459nobodyさん04/08/17 09:47ID:rYUQBx/N
>>453
2chじゃなくてOTNのサポート掲示板で聞いた方がいいと思うよ。
知ってるかもしれないが入り口は
http://otn.oracle.co.jp/
0460nobodyさん04/08/17 16:25ID:???
Strutsつかって
jsp内に複数あるテキストボックスの入力内容を
1つの配列に渡したいのですが、やりかた教えてください。
ヒントだけでもいいですので・・・
0461nobodyさん04/08/17 16:46ID:???
フィールドの名前を同じにするか、
ActionFormに配列で返すメソッドを設ける。
0462nobodyさん04/08/18 11:24ID:???
すまん・・
テキストボックスの数が動的に変化する場合、
それら入力値の値を取得するには
どうすりゃいいのでしょうか?
ActionFormの validateメソッドの中にゴリゴリ書くしかないのでしょうか?
0463nobodyさん04/08/18 11:32ID:???
>>462
formから配列で取れるよ。
0464 04/08/18 11:44ID:???
Input.jsp
======================================

<html:form action="/owner">
 name1 : <html:text property="email"/><html:errors property="name1"/></br>
 name2 : <html:text property="name"/><html:errors property="name2"/></br>

 ・
 ・
 ・
 nameN : <html:text property="name"/><html:errors property="nameN"/></br>

<html:submit/><html:cancel/>
</html:form>

======================================

from.java
で、
private String[] name;
とかいうプロパティにセットしたいのだが、
462氏が言う配列として取得するにはどうすれば・・・
0465nobodyさん04/08/18 23:51ID:???
>>464
nameが同じじゃないと
0466nobodyさん04/08/18 23:52ID:???
あ、この場合はpropertyね
0467nobodyさん04/08/19 21:49ID:???
>>464
itareteで作ってるの?
それとも、自作?
どちらにしろ、すべてproperty="name"にすれば
form.javaで
String[] name = form.getName();

で取れる。
formはキャストしたものね。
0468nobodyさん04/08/23 17:21ID:???
ふと思ったんだが
配列で取る場合、格納される位置ってのは
保証されているんだろうか?
たとえばソース表示で右上から順に
格納されていくとか・・・。

0469nobodyさん04/08/23 17:37ID:???
>>468
保証されない。
0470nobodyさん04/08/24 17:42ID:CGoWFOLW
ActionFormの初期値をデータベースなどから動的につくりたい場合

init.do(初期化Action) => input.jsp(入力フォーム) => input.do(入力Action)

のように初期化するだけのActionを設けて、そこから遷移させるもんなんでしょうか?
それともinput.jspの先頭でFormBeanを操作する?
0471nobodyさん04/08/24 17:46ID:???
init.doをForwardActionのサブクラスにしてその中でFormBeanを操作した。
047247004/08/24 17:58ID:???
>>471
速レスどうも。

メンテを考えるとできるだけ一般的な手法をとりたいのですが、
はじめてのStrutsなので結構難儀してます。
参考になりました。
047347104/08/24 18:06ID:???
>>472
すまそ、漏れの場合そうしただけでこれが一般的かどうか全然わからん
0474nobodyさん04/08/24 20:36ID:???
>>470
別にそれでいいんじゃないの?
0475nobodyさん04/08/24 21:33ID:???
>>470
一般的といえばそれが一般的だけど、それ、ActionFormの初期化じゃなくてinput.jspの初期設定ね。
0476nobodyさん04/08/25 09:48ID:???
テキストボックスが10個あって
それの入力内容を配列に格納したい時って

たとえば
private String[] textbox = new String[10]


for(int i=0;i10;i++){
  String param_name = "param";
  param_name=param_name+i;
  textbox[i]=request.getParameter(param_name);
}


とかっていうダサイコードかかなきゃいけないんですか?
0477nobodyさん04/08/25 10:34ID:???
>>476
もしかしてスレちがいの話題?
Strutsなら直接request#getParameter()はしない。

>>475
> それ、ActionFormの初期化じゃなくてinput.jspの初期設定ね
ここよくわからん
047847604/08/25 10:43ID:???


10個あるテキストボックスのname属性を
全て同じ名前にすれば

↑のようなコード書かなくても
Strin[g[] textbox=form.getParam();

で取れるんだが、これだと配列の要素位置の保証が
無いと469がいっていたので・・・・。
保証があれば、↑のようなコードかかなくてもいいのだが・・。
0479nobodyさん04/08/25 19:44ID:???
んなことしたけりゃ連番で名前つけろよ。
全部同じ名前ならどれも等価だろ、順番機にしてどうすんだ
0480nobodyさん04/08/25 19:58ID:???
そうだね。
ブラウザがどの順にPOSTするかも不定だろうし。

まー実装上は問題ない気もするけど。
0481nobodyさん04/08/26 10:37ID:???
実は仕事で配列を使ってデータを入力するフォームがあって、
各種プラットフォーム、osのテスト通ったが特に問題はなかったわけだが、、
たまたま?
0482nobodyさん04/08/26 10:57ID:???
>>481
たまたま。
実際にはHTMLで記述された順に送信するブラウザがほとんどだし、
そういう動作をしないブラウザを俺も知らないが
仕様上保証されているものではないので、順不同で送信する
ブラウザがあっても(既存のブラウザが将来のバージョンでそうなっても)
文句は言えないよ。
0483nobodyさん04/08/26 14:39ID:???
validation.xml用のEclipseプラグイン
ってありますかね?
あったら便利なんだけど
0484nobodyさん04/08/26 15:24ID:???
DBの検索結果をどっかのオブジェクトに保持したいのだが、
ActionFormのメンバ変数に保持させるのはあまり宜しくない?

やっぱ自作のBeanを作ってそれをインスタンス化して格納して
セッションに入れた方が良いのか?

0485nobodyさん04/08/27 13:25ID:???
基本的なことかもしれないけど教えてください。
JSPでタグを使って
Beanのプロパティを表示したいのですが、
このBeanってもしかしてシリアライゼーブルをインプリメントしていないと
タグを使ってもとりだせないのでしょうか?
0486nobodyさん04/08/27 13:38ID:???
logic:iterateをつかってBeanの内容を表示したいのですが
うまくいきません、恐らくJSP側に問題があると思います。
ご指摘宜しくお願いします。


public class SerchForm extends ActionForm {

private String[] serchresults_ID;

/*以下省略します*/
}


====================JSP====================
・・・・・・
・・・・・・
<logic:iterate id="TserchFormd" name="serchForm" >
<li><bean:write name="TserchFormd" property="serchresults_ID" />
</logic:iterate>
・・・・・・
・・・・・・
0487nobodyさん04/08/27 17:34ID:???
すみません、全て自己解決しました。
0488nobodyさん04/09/07 21:22ID:???
Strutsを最近勉強し始めたものです。

サーバ : Tomcat 5.0.27
OS : Windows 2k , Fedora core 1
Struts version : 1.1

struts-htmlとstruts-tilesを使用しています。
サイト全てをxhtmlで出力させたいので、メインのレイアウト用JSPには
<html:html xhtml="true">
と記述しています。

質問ですが、struts-tilesでheader.jspを読み込むようにしてあるのですが
header.jspのほうで
<html:img page="/images/hoge.gif" alt="" width="xxx" height="yyy" />
を入力するとHTML形式で出力してしまいます。

このようなtilesを使用している場合で
全てのパーツ(JSP)をXHTMLとして出力させる方法がありましたら
教えていただきたいです。よろしくお願いします。
048948804/09/08 10:15ID:???
いろいろ調べていたら対象方法がわかりました。
<html:xhtml />

このタグを各パートのjspに入れれば解決できました。
スレ汚し失礼しました。
0490nobodyさん04/09/08 23:25ID:???
>>489
むしろ乙。
0491nobodyさん04/09/09 00:47ID:nnK3UDEH
S2Strutsはどう?
0492nobodyさん04/09/10 16:26:19ID:???
Struts1.1でJSPを表示してSubmitするプログラムを作成しているのですが、
表示は可能なんですが、Submitしたら次のアクションに行く前に
[BeanUtils.populate]: java.lang.NullPointerExceptionが発生します。
やはりリストの中のマップに値をセットするのは無理なのでしょうか?
何か良い解決策をお持ちの方、ご教授下さい。

次の発言にソースを記述します。
0493nobodyさん04/09/10 16:28:43ID:???
Actionクラス
public class HogeAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {

HogeActionForm hogeActionForm = (HogeActionForm)form ;
List list = new ArrayList();
for(int i = 1; i <= 10; i++){
Map map = new HashMap();
map.put("key1", "aaa" + i);
map.put("key2", "bbb" + i);
list.add(map);
}
hogeActionForm.set_dataList(list);
/* ---以下省略--- */
}
ActionFormクラス
public class HogeActionForm extends ValidatorForm {
private List _dataList = null;
public List get_dataList() { return _dataList; }
public void set_dataList(List d) { this._dataList = d; }
/* ---以下省略--- */
}
0494nobodyさん04/09/10 16:30:34ID:???
JSP
<html:form action="/hoge">
TABLE
<logic:iterate id="dataList" name="hogeForm" property="_dataList" indexId="i">
TR
TD<html:text name="hogeForm" property='<%= "_dataList[" + i + "].key1" %>' />/TD
TD<html:text name="hogeForm" property='<%= "_dataList[" + i + "].key2" %>' />/TD
</TR>
</logic:iterate>
/TABLE
<html:submit value="Submit" />
</html:form>

長くてすみません。よろしくお願い致します。
0495nobodyさん04/09/10 16:46:02ID:???
ちなみにタグの<>があるとなぜか書き込みエラーが出てたので、
取ってます。Live2chのバグかな?
0496nobodyさん04/09/11 00:53:30ID:???
>>495
その理由が分からない時点で(ry
0497nobodyさん04/09/11 02:18:02ID:???
<TR>
<TD>
</TD>
</TR>
0498nobodyさん04/09/11 02:19:16ID:???
&lt;TR&gt;
&lt;TD&gt;
&lt;/TD&gt;
&lt;/TR&gt;

って書いてみた。
0499nobodyさん04/09/11 02:19:56ID:???
>>497=>>498
です。
050049204/09/11 11:14:18ID:???
何となく理由が分かりました。
<html:text name="hogeForm" property='<%= "_dataList[" + i + "].key1" %>' />
の様な書き方をすると、取得は出来るようですが、
セットする場合、に_dataListがnullになっているのでセット出来ないと
言っているのではないかと思います。

そこで、Submitした後も_dataListをnullにならない様にしたいのですが、
何か良い方法は無いのでしょうか?
ご存じの方、ご教授下さい。
よろしくお願い致します。
0501nobodyさん04/09/11 13:31:55ID:???
どういうことをしたいのかわからんけど、
設計を変えたほうがいいよ。
050249204/09/11 14:00:05ID:???
ListにMapをセットして使用することは、よくあることだと思いますが、
Strutsではこういう使い方は出来ないと言うことでしょうか?

設計を変えるとしたら、どう変えるのが理想的でしょうか?
0503nobodyさん04/09/11 14:01:10ID:???
>>500
List型のプロパティに値をセットするときは、セットする前に
リストの要素を用意しておく必要がある。
方法はいろいろあるが、俺はActionFormのreset()メソッド内で
リストの要素を用意しておくことが多いかな
0504nobodyさん04/09/11 14:02:12ID:???
>>502
501は気にするな。自分でやったこともないのに適当に回答しているだけと思われ。
0505nobodyさん04/09/11 14:21:43ID:???
ListのなかのMapに値をsetできないってことか?
そりゃそうだろう。
0506nobodyさん04/09/11 14:30:29ID:???
>>505
そうとも言い切れない
ActionFormのsetterの実装に依るだろう
050749204/09/11 16:22:58ID:???
503さんの意見を参考に、
resetメソッド内で事前にセッションにセットしたリストを取得する様にしてみました。
if (_dataList == null) {
HttpSession session = request.getSession();
List list = (List)session.getAttribute("hogeList");
_dataList = list;
}

すると例外は出なくなりましたが、
TEXTフィールドに入力した値がセットされません。
JSPのproperty='<%= "_dataList[" + i + "].key1" %>'の部分の書き方が悪いのかな?
というところまでは分かるのですが、どう変えたら良いのでしょうか?
何度もすみませんが、よろしくお願いします。

0508+++04/09/11 23:14:45ID:???
出来ないんなら、まあそうなんじゃなかろか。誰か知ってるかも知らんけど。
とりあえず"dataList[0].key"の形でrequest.getParameterに入ってくるので、
それを読むか。
通常こういう場合、
<logic:iterate id="data" name="hogeForm" property="_dataList">で回して、
<html:text name="data" property="key1" indexed="true" />じゃあないかと
思うんだけど。結果は変わらないけど。
0509nobodyさん04/09/12 09:58:09ID:???
なんでreset()でやるんだろう
表示(初期化)のためのActionの中で必要な情報をcollectionに詰めて、formにsetすりゃいいだけじゃん?
0510nobodyさん04/09/12 10:16:59ID:???
>>509
ActionFormがrequestスコープの場合はダメ。
毎回のリクエスト受信時にActionFormのインスタンスは新たに生成され、
初期化処理で扱うActionFormのインスタンスと送信後に扱うActionFormのインスタンスは別になるから。
0511nobodyさん04/09/12 20:53:02ID:???
何か問題ある?
送信先で同じActionFormを使ってやりゃいいだけじゃん。
0512nobodyさん04/09/12 21:14:53ID:???
>>511
>>509のやり方では送信先のActionFormのインスタンスの中のListプロパティの中が空っぽのままだろ?
051349204/09/13 09:40:19ID:???
>>512
そうなんです。
>>509の方法だと、Listがnullになってしまうんです。
だから、property='<%= "_dataList[" + i + "].key1" %>'の書き方だと、
_dataList[0].key1という名前になり、それをActionSetvletか何かで、
_dataList.get(0).put("key1","hogehoge")というようなメソッドを呼んでると思うのですが、
_dataListがnullだからNullPointerExceptionが出るのだと思います。
051449204/09/13 10:35:16ID:???
みなさん、色々とアドバイスをいただき、
ありがとうございました。
結局、現在はActionFormに以下のソースを追加しました。
private String[] key1 = null;
private String[] key2 = null;
public String[] getKey1() {
 return key1;
}
public void setKey1(String[] k) {
 this.key1 = k;
}
public String[] getKey2() {
 return key2;
}
public void setKey2(String[] k) {
 this.key2 = k;
}

画面表示時は、以下の様にしてListの内容を出力し、
<logic:iterate id="list" name="hogeForm" property="_dataList">
<html:text name="list" property="key1" />
<html:text name="list" property="key2" />
</logic:iterate>
ActionFormにセット時はString配列にセットする様にして
処理しています。

でも、このやり方は邪道だと思っています。
もし他に良い方法がありましたらご教授下さい。
0515nobodyさん04/09/13 22:16:56ID:uejohbjj
Actionクラスの中でConnectionを取得してDBアクセスしてるコードが沢山あるんですけど、
何か弊害ありますか?
0516nobodyさん04/09/13 22:28:03ID:???
>>515
ビジネスロジックをActionクラスに書くな
0517nobodyさん04/09/13 22:31:27ID:uejohbjj
なにか弊害ありますか?
0518nobodyさん04/09/13 23:11:38ID:???
>>515
ビジネスロジックを使い回しできない
0519nobodyさん04/09/13 23:40:40ID:???
515じゃないけど、それって一般的なコードでの
モジュール化をするかしないかの違いでしかないの?
もうちょっと説得力のある理由があるのかとおもった。

そのAction固有のロジックで複雑でもなければとりあえずそこに書いといて、
必要になったときにリファクタリングで括りだす方針でも問題ないような。
Actionはシングルトンだから書けないロジックもあるのはわかるけど。
0520nobodyさん04/09/14 08:03:53ID:???
まあ、好きにすれば?
0521nobodyさん04/09/14 21:28:50ID:???
そのビジネスロジックを使い回したくなってから、わざわざリファクタリングするのか?
MVCの利点が理解できなきゃこれも理解できないだろうけど。
0522nobodyさん04/09/14 21:46:02ID:???
まあ、この辺でも読んでおけ
http://struts.apache.org/userGuide/building_controller.html#action_design_guide
0523nobodyさん04/09/14 22:30:17ID:???
>>521
Action をモデルとみなしてはいけない理由を教えてください。
0524nobodyさん04/09/14 22:41:16ID:DrU+5VXT
先輩がActionクラスに入るはじめのところでコネクションを取得して、
そのあとActionから抜けるまで使いまわすようなフレームワーク作ってるんですけど
どうしたらいいですか?
Actionクラスのメソッドの引数にconnとかがあります!
0525nobodyさん04/09/14 22:47:21ID:???
>>524
読解不能
0526nobodyさん04/09/14 22:52:17ID:DrU+5VXT
先輩みっけ
0527nobodyさん04/09/14 23:27:05ID:???
>>524
Action の最初と最後をトランザクション境界にしてるんだろ。
違うのか? それはそれでありだと思うが。
ただ、Action クラスを継承して作ってんだったら、その先輩はうんこかな?
RequestProcessor を拡張し、コネクションは ThreadLocal から取得する
ようにしたほうが良い。Action のインタフェースも変える必要はない。

もちろん、この Action をモデルとして考えた場合の再利用性は低くなる。
が、プロジェクト内での再利用性は十分だし、開発効率も高い。
0528nobodyさん04/09/16 00:01:38ID:???
メテオはやめてお
0529nobodyさん04/09/17 00:11:06ID:UID/DeJQ
Actionで取得したconnectionをAction抜けた後のfilterでクローズしてみようかと思ってるんだけど
そういう構成ってどう思いますか?
0530nobodyさん04/09/17 00:46:12ID:???
>>529
「Action抜けた後のfilter」って何?
0531nobodyさん04/09/17 00:50:37ID:UID/DeJQ
filterクラスってあるじゃん、知らないの?
*.doに仕掛ければ*.doアドレスのやつは全部そのfilter掛かるんだよ。
0532nobodyさん04/09/17 21:28:32ID:???
>>531
俺はありだと思うよ。n階層モデルにおもっきり逆行してるが。
0533nobodyさん04/09/17 23:01:21ID:???
>>531
俺もありだと思うよ。
これから退職届けだして、それを引き継いだやつを地獄に落とすんだろ。
0534nobodyさん04/09/18 00:44:57ID:???
俺はアリ?だと思うよ
アリ?こりゃおっかしいなぁ〜

寒いわボケ しね
0535nobodyさん04/09/18 00:59:53ID:???
モハメド・アリ
0536nobodyさん04/09/18 01:00:21ID:???
アリさんマークの引っ越し社
0537nobodyさん04/09/22 04:52:07ID:???
>>529
むしろfilterでコネクション取得して、切断。
Hibernateだと、「Open session in view」ってなってるから、さしずめ「Open connetion in view」だろうか。
0538nobodyさん04/09/22 04:55:09ID:???
>>527
Spring StrutsやらS2Struts使って、AOPでやればもっとよいかも。
0539nobodyさん04/10/08 11:41:11ID:???
Struts初心者の者です。
現象として、ApplicationResourcesに設定してあるメッセージを取得できません。

struts-config.xmlには、
<message-resources parameter="res.ApplicationResources"/>
と設定して、ApplicationResourcesファイルの階層も間違っていないのですが。

どうやら、ローカルサーバーのApplicationResourcesを見ずに、ビルドした
ローカルの階層を見ているようで、こちらに設定するとメッセージは取得出来ます。

Tomcat 5.0
Struts1.1
を使用しています。

何か他に設定が必要なのでしょうか?
どなたかお教えいただけないでしょうか? m(_ _)m
0540nobodyさん04/10/08 19:54:12ID:???
>どうやら、ローカルサーバーのApplicationResourcesを見ずに、ビルドした
>ローカルの階層を見ているようで、こちらに設定するとメッセージは取得出来ます。

よくワカンネ
0541nobodyさん04/10/08 20:24:16ID:???
srcじゃなくてclassesフォルダのファイル見てるってこと?
それだとそれで正しい挙動だと思う。
0542nobodyさん04/10/10 23:48:18ID:d05ou0eX
上司にStrutsが現在における最高のMVCモデルフレームワーク(Webアプリにおいて)だと言われ、本を渡されたんですが本当ですか?
0543nobodyさん04/10/11 00:26:05ID:???
>>542
賛否両論だが仕事でJavaでwebやるならとりあえず覚えておけ。
Java-webフレームワークの中では最高に普及していることは間違いない。
0544nobodyさん04/10/11 00:27:51ID:???
モノとしてはTapestryやらWebWork2の方がよさげだね。
0545nobodyさん04/10/11 09:30:05ID:???
>>544
俺もそう思うけど、仕事で使うなら普及してるのが一番だしね。
しょうがないね。
0546nobodyさん04/10/11 12:49:36ID:???
SpringやらSeasar2と一緒に使えば、StrutsでもWebWork2の利点みたいなことはできるわけだからねぇ。
あんまり末端の層でブアツイフレームワークは必要ない気がする。
0547nobodyさん04/10/11 14:55:13ID:???
何が最高だか聞いてみたら?
普及度? シンプルさ? 軽量さ? 機能? 脳内知識?

2位と3位のフレームワークも上げて欲しい。
0548nobodyさん04/10/11 18:24:22ID:???
Struts+Seasar2とかHibernateとかでもうしばらく頑張る。
その後JSFに以降。
0549nobodyさん04/10/11 18:28:05ID:???
Struts-facesでいいんじゃねぇ?
055054204/10/11 22:46:32ID:1ye9esf4
ええ?そうなんですか?いろいろあるんですね〜。ありがとうございます。でもどうせ勉強するなら最高の組み合わせを考えてるんですけど、結論出ませんかね?自分としては仕事で使うので普及率で決めたいんですが
■ このスレッドは過去ログ倉庫に格納されています