あなたの人生に効く作品がみつかる手書きのカード♪>>

以下のサイトを参考に環境構築を行い、
サンプルプログラムを実行しようとしています。、
http://www.atmarkit.co.jp/fjava/special/struts2/ …
(サンプルファイルは3pで落とすことができます。)

実行しようとすると下記エラーが出てしまい、解決ができない状況です。
-------------------------------------------------------------------------------
WARNING: [SetContextPropertiesRule]{Context} Setting property 'source' to 'org.eclipse.jst.jee.server:Test20130103' did not find a matching property.
1 03, 2013 5:38:36 午前 org.apache.catalina.core.StandardContext filterStart
SEVERE: フィルタ struts2 の起動中の例外です
java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.FilterDispatcher
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:532)
at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:514)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:133)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:257)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:383)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:104)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4650)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5306)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:657)
at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1637)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)

1 03, 2013 5:38:36 午前 org.apache.catalina.core.StandardContext startInternal
SEVERE: Error filterStart
1 03, 2013 5:38:36 午前 org.apache.catalina.core.StandardContext startInternal
SEVERE: 以前のエラーのためにコンテキストの起動が失敗しました [/Test20130103]
---------------------------------------------------------------------------------

java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.FilterDispatcher
とあるため、
必要なjarファイルがライブラリに追加されていないだけだと最初は思っていたのですが、
追加してもうまく実行されないためどうも違うようです。
下記jarファイルを現在インストールしています。

commons-io-2.0.1.jar
commons-fileupload-1.2.2.jar
commons-lang-2.4.jar
commons-lang3-3.1.jar
commons-logging-1.1.1.jar
freemarker-2.3.19.jar
javassist-3.11.0.GA.jar
ognl-3.0.6.jar
struts2-codebehind-plugin-2.3.8.jar
struts2-convention-plugin-2.3.8.jar
struts2-core-2.3.8.jar

使用している開発環境eclipseはver4.2.1になります。

何かアドバイスをいただけたらと思います。
よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

お疲れさまです。



参照された記事はやや古いバージョンのStruts2のようですね(・ω・`
サンプルプログラムはEclipseのWTPプラグインを利用して作成した"動的Webプロジェクト"のようですので、WEB-INF/libに、お使いのjarファイルを入れていれば動作環境は整います。

ただし、最新の2.3.8を使うとなると、サンプルコードに修正が必要です。

◆フィルタを変更します。
サンプルにある org.apache.struts2.dispatcher.FilterDispatcherは現在、非推奨です。
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilterをお使いください。

◆Actionクラス
@Results、@Resultアノテーションは、Struts2.1よりConventionプラグインへ移行しましたので、インポートするパッケージが異なります。

import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;

◇Result指定
@Resultで指定する属性も変更になりました。

@Result(name = "hello1", location = "index.jsp")

このように、locationを使います。
また、type属性も、クラス名.classではなくなり、文字列(エイリアス)で指定します。

@Result(name = "hello2", location = "jump.jsp", type = "redirect"),
@Result(name = "recipe", location = "jump!recipe", type = "redirectAction"),

@Resultにつけるtype属性については、公式サイトの下記をご覧ください。
http://struts.apache.org/2.x/docs/result-types.h …

他にもjumpActionクラス:@Resultは@Results{}の中になければコンパイルエラーです。
index.jspの1行目:pageEncodingの左に半角スペースがありませんので追加します。

これでひとまず画面が出る所まではできるかと存じます。

以上です。

この回答への補足

お早いご回答とご丁寧な説明感謝致します。

修正して実行してみたところ下記エラーが出ました。
既に操作[ビルドパスの構成]→[外部jarの追加]で xwork-core-2.3.8.jar は入れています。
どうしても解決できないためこちらも見てもらってよろしいでしょうか。

また、お手数かけますがもうひとつ質問があります。
上記の操作のようにjarを追加すると'Java Resources'配下の'ライブラリー'にjarが追加されていきます。
今回、A-pZ様のおっしゃるように'WEB-INF'配下の'lib'にも同じjarを追加しましたが、
双方何が違うのでしょうか。
どちらか一方にjarは追加すれば良いといったようなものではないのでしょうか。

以上、よろしくお願いいたします。

以下エラー一覧
--------------------------------------------------------------------------------------------------------------------------------------
1 04, 2013 1:25:59 午前 org.apache.catalina.core.StandardContext filterStart
SEVERE: フィルタ struts2 の起動中の例外です
java.lang.NoClassDefFoundError: com/opensymphony/xwork2/config/ContainerProvider
at org.apache.struts2.dispatcher.ng.InitOperations.createDispatcher(InitOperations.java:110)
at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:73)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:51)
at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:278)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:259)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:383)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:104)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4650)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5306)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:657)
at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1637)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.ClassNotFoundException: com.opensymphony.xwork2.config.ContainerProvider
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
... 21 more

1 04, 2013 1:25:59 午前 org.apache.catalina.core.StandardContext startInternal
SEVERE: Error filterStart
1 04, 2013 1:25:59 午前 org.apache.catalina.core.StandardContext startInternal
SEVERE: 以前のエラーのためにコンテキストの起動が失敗しました [/Test20130103]

補足日時:2013/01/04 01:38
    • good
    • 0
この回答へのお礼

あのあと少し作業してみると'lib'フォルダへ
必要であるjarの追加が抜け漏れていたことがわかりました。
実行したところ、おかげさまで画面が表示されました。
画面が表示されましたが今のところボタンをクリックしてもほかのjspへ
ジャンプできない状態です。
もう少し作業してみてどうしてもダメなようであれば
また質問を行おうと思います。
ご協力くださりありがとうございました。

お礼日時:2013/01/04 03:18

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QStruts2のプログラムについて

今、Strutsについて勉強しているのですが、自分で作ったサンプルプログラムが動きません。
サンプルプログラムは以下のサイトからそのまま持ってきました。
http://codezine.jp/article/detail/2296?p=2
http://codezine.jp/article/detail/2296?p=3
http://codezine.jp/article/detail/2296?p=4

パソコン環境は次の通りです。
eclipse3.7Indigo
Tomcat7.0
Struts2.3.1.2
Java:jdk_1.6.0_18

また、コンソールに出たエラーは次の通りです。

警告: Could not create JarEntryRevision for [jar:file:/D:/eclipse_workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/HelloProject/WEB-INF/lib/struts2-core-2.3.1.2.jar]!
java.lang.NoClassDefFoundError: org/apache/commons/io/FileUtils

[中略]

2012/05/15 22:16:40 org.apache.catalina.core.StandardContext filterStart
致命的: フィルタ struts2 の起動中の例外です
java.lang.NoClassDefFoundError: org/apache/commons/lang/StringUtils

[中略]

2012/05/15 22:16:40 org.apache.catalina.core.StandardContext startInternal
致命的: Error filterStart
2012/05/15 22:16:40 org.apache.catalina.core.StandardContext startInternal
致命的: 以前のエラーのためにコンテキストの起動が失敗しました [/HelloProject]
--------------------------------------------------------------------------------

どのようにしたらいいかご教授お願いします。
出来るだけ早く、返答していただけると嬉しいです。
よろしくお願いします。

今、Strutsについて勉強しているのですが、自分で作ったサンプルプログラムが動きません。
サンプルプログラムは以下のサイトからそのまま持ってきました。
http://codezine.jp/article/detail/2296?p=2
http://codezine.jp/article/detail/2296?p=3
http://codezine.jp/article/detail/2296?p=4

パソコン環境は次の通りです。
eclipse3.7Indigo
Tomcat7.0
Struts2.3.1.2
Java:jdk_1.6.0_18

また、コンソールに出たエラーは次の通りです。

警告: Could not create JarEntryRevision for [jar:file:/D:/eclipse_...続きを読む

Aベストアンサー

jarファイルが不足しているようです
StringUtils.classがはいってるapache commonsのjarファイルをlibフォルダに追加してください

QHTTPステータス 404 - There is no Action mapped for namespace / and action name login.

TOMCAT、MYSQL、STRUTS2、eclipsを使用して開発しております。
いままで正常に動いていたのに、
突然以下のエラーが出るようになりました。

HTTPステータス 404 - There is no Action mapped for namespace / and action name login.

eclipsの設定等が変わってしまったのでしょうか?
ご存知の方ご教授お願いいたします。

Aベストアンサー

ZeroConfigで作成されているのでしたらわかりませんが、そうでないのなら「struts.xml」の packageタグの「namespace」をEclipseのヒストリーなどで確認してみてください。

Qの値をリストで取得したい

Struts2です。
リストの取得の仕方で困っています。

特定の条件で検索をかけ、jspに表示された結果を一部textfieldで<s:iterator>のリスト表示し、その中身を変更して更新ボタンを押すと、DBのデータを更新する、という流れです。

jspは以下のようになっています。(一部抜粋)

<table border="1">
<s:iterator status="st" value="projectList">
<tr>
<td><s:checkbox id="isChecked" name="isChecked" /></td>
<td><s:property value="projno"/></td>
<td><s:textfield id="projname" name="projname" maxlength="24" size="52" /></td>
<td><s:select id="deptno" name="deptno" list="departmentList" value="%{deptno}" listKey="deptno" listValue="deptno" /></td>
<td><s:textfield id="respemp" name="respemp" maxlength="6" size="12" /></td>
<td><s:textfield id="prstaff" name="prstaff" maxlength="6" size="12" /></td>
<td><s:textfield id="prstdate" name="prstdate" maxlength="8" size="12" /></td>
<td><s:textfield id="prendate" name="prendate" maxlength="8" size="12" /></td>
<td><s:textfield id="majproj" name="majproj" maxlength="6" size="12" /></td>
</tr>
</s:iterator>
</table>
<s:property value="listSize"/>件
<s:form >
<table>
<tr>
<td><s:textfield label="プロジェクトNo" id="projno" name="projno" size="8" maxlength="6" /></td>
</tr>
</table>
<table>
<tr>
<s:submit action="search103R" value="一覧検索" onclick="return search_fnc()" />
<s:submit action="modify103R" value="一覧更新" onclick="return modify_fnc()" />
<s:submit action="jumpStruts2" method="jump103R3" value="登録画面" />
<s:property value="replyMsg" />
<s:hidden value="%{projno}" />
</tr>
<s:actionerror />
</table>
</s:form>

javaのロジックは、以下のようになっています。引数に入れられた項目で更新する、という処理です。

// 更新処理
public void modify(String projno, String projname, String deptno, String respemp, String prstaff, String prstdate, String prendate, String majproj) throws SQLException, IOException {
// SQLプロパティファイル読み込み
sqlConf = DevLearningUtils.loadProperties("sql");
// SQL文
    UPDATE PROJECT SET PROJNAME = ?, DEPTNO = ?, RESPEMP = ?, PRSTAFF = ?, PRSTDATE = ?, PRENDATE = ?, MAJPROJ = ? WHERE PROJNO = ?

// 更新のSQL文を読み込む
statement = conn.prepareStatement(sqlConf.getProperty("ProjectModify"));

// 更新項目をSQL文にセット
statement.setString(1, projname);
statement.setString(2, deptno);
statement.setString(3, respemp);
// プロジェクト工数が空なら0を入れる
if (prstaff.length() == 0) {
statement.setString(4, "0");
} else {
statement.setString(4, prstaff);
}
statement.setString(5, FormatUtils.addHyphenToDate(prstdate));
statement.setString(6, FormatUtils.addHyphenToDate(prendate));
statement.setString(7, majproj);
statement.setString(8, projno);

statement.executeUpdate();
}

色々と調べてみたのですが、iteratorの内容をリストとしてjavaで取得する、という方法がわかりませんでした。ご教示お願いします。

Struts2です。
リストの取得の仕方で困っています。

特定の条件で検索をかけ、jspに表示された結果を一部textfieldで<s:iterator>のリスト表示し、その中身を変更して更新ボタンを押すと、DBのデータを更新する、という流れです。

jspは以下のようになっています。(一部抜粋)

<table border="1">
<s:iterator status="st" value="projectList">
<tr>
<td><s:checkbox id="isChecked" name="isChecked" /></td>
<td><s:property value="projno"/></td>
<td><s:textfield id="projname" name="projname" maxl...続きを読む

Aベストアンサー

nameが
projectList[0].projname
といった具合になるように生成してあげれば、
projectListの0番目の要素のprojnameに値をセットしてくれます。

具体的には
<s:iterator status="st" value="projectList">
<s:textfield name="projectList[%{#st.index}].projname" value="%{projname}" />
とします。

QStruts2 タグの値取得について教えてください。

現在、HashMapにKeyとValueを入れ、<s:select>タグを使用し、
選択リストを表示し、選択後<s:submit>で値を
Actionに渡すプログラムを書いております。

今のところ表示まではできるようになったのですが、
Action側で値の取得の方法がわかりません。

いろいろ調べてみたのですが一覧を表示する方法の
サイトはいくつか見つかったのですが値の取得方法がどうしてもみつかりません。

ご存知の方がいらっしゃいましたら
参考URLや方法等ご教示いただけないでしょうか。

Aベストアンサー

値の受け取り方には、FieldDriven, ModelDriven,
ScopedModelDriven等の方法がありますが、
一番簡単なFieldDrivenであれば、
Actionにプロパティを実装して、
そのプロパティ名をタグのname属性に指定すれば良いです。

FooAction {
private String pref;
// アクセッサは適宜実装して下さい。
}

<s:select name="pref" list="#{'01':'北海道', '02':'青森県', 以下略}"/>

QStruts:フレーム内JSPからcssファイルの参照方法

htmlタグライブラリのframeで指定したJSPからスタイルシート(*.jsも)の参照ができません。
色々試したのですが、解決方法を教えて下さい。。。
環境はWin2000、Tomcat5、Struts2です。

↓フレーム呼び出し
<frameset rows="50%,*">
<html:frame page="A.jsp"/>
<html:frame page="B.jsp"/>
</frameset>
※ディレクトリ:/apname/jsp/X.jsp

↓フレーム内(A.jsp)
<link rel="stylesheet" href="./C.css" type="text/css"/>
※ディレクトリ:/apname/css/C.jsp

ちなみに「href="../css/C.css"」としてもダメなんです。
参照先ディレクトリは色々試したけど使えません。

よろしくお願いします。

Aベストアンサー

No.1 の方が回答してくれているが別の回答を。

Struts を使用しているのならば、CSS などへのリンクは html:rewrite で書いた方がやりやすいと思う。
今回の構成では以下のように書きます。

<link rel="stylesheet" href="<html:rewrite page="css/C.css"/>" type="text/css"/>

このように書くと、クライアントでは以下のようなサーバ相対になっています。

<link rel="stylesheet" href="/apname/css/C.css" type="text/css"/>

JSP のタグ解析は HTML のタグとは別に行われるので、上記のように HTML の属性の中に JSP タグを書いても正常に処理されます。

CSS などは、JSP と別フォルダに入れることが多いために相対パスで書いていると JSP ファイルを移動したくなったときに面倒になります。
また、Struts の場合、JSP がおいてある場所と実際の URL の位置関係がアクションの実装の仕方などによっては一致しなくなりますので、「JSP ファイルから見ての相対パス」では正常に解決できなくなることがあります。
このため、サーバ相対に書き直してくれる html:rewrite を使用した方が無難だと思います。

参考URL:http://tag.main.jp/htmlrewrite.html

No.1 の方が回答してくれているが別の回答を。

Struts を使用しているのならば、CSS などへのリンクは html:rewrite で書いた方がやりやすいと思う。
今回の構成では以下のように書きます。

<link rel="stylesheet" href="<html:rewrite page="css/C.css"/>" type="text/css"/>

このように書くと、クライアントでは以下のようなサーバ相対になっています。

<link rel="stylesheet" href="/apname/css/C.css" type="text/css"/>

JSP のタグ解析は HTML のタグとは別に行われるので、上記のように H...続きを読む

Q「httpステータス404」というエラーが出ます。

「httpステータス404」というエラーが出ます。

java初心者です、宜しくお願い致します。
EclipseでServletを書いてやりましたが、以下のようなエラーが出ます、
原因はなんでしょうか、宜しくお願い致します。
「httpステータス404-/Servlet%E7%B7%B4%E7%BF%92/ ServOutput」

Aベストアンサー

Not Found
という意味です。
そのファイルが無い。あるいはリンクが間違っています。
詳しくは参考URLをみてください。

参考URL:http://ja.wikipedia.org/wiki/HTTP_404

Qeclipseとtomcatで404エラー

-----------------------------------
Windows7 Ultimate

eclipse Indigo
tomcat 5.5
-----------------------------------

eclipseとtomcatを使用して、JSPを動かそうとしています。
eclipseとtomcatとJDKはC:\pleiadesの下に配置しています。そしてワークスペースは
C:\workspace\Testとして登録しています。(ちなみに動的Webプロジェクトで作成しています)

既存のJSPファイルをeclipse上で右クリックして、サーバーで実行とすると、eclipseの画面上にきちんと表示されるのですが、その後、そこで動いていたtomcatを終了させて、eclipseの上部にあるtomcatのアイコンをクリックし、その後、通常のブラウザで表示させようとすると404エラーが出てしまいます。(http://localhost:8080/Test/test.jsp)

そもそも右クリック→実行の際に起動するtomcatとeclipse上部にアイコンで存在するtomcatはどう違うのでしょうか?

そしてどうすれば、上部のtomcat起動からブラウザで直接JSPを呼び出すことが出来るのでしょうか?

申し訳ありませんが、ご教授お願い致します。

-----------------------------------
Windows7 Ultimate

eclipse Indigo
tomcat 5.5
-----------------------------------

eclipseとtomcatを使用して、JSPを動かそうとしています。
eclipseとtomcatとJDKはC:\pleiadesの下に配置しています。そしてワークスペースは
C:\workspace\Testとして登録しています。(ちなみに動的Webプロジェクトで作成しています)

既存のJSPファイルをeclipse上で右クリックして、サーバーで実行とすると、eclipseの画面上にきちんと表示されるのですが、その後、そこで動いてい...続きを読む

Aベストアンサー

EclipseからTomcatを起動した場合、プロジェクトに生成されたWebアプリケーションのディレクトリをTomcatの公開ディレクトリに強制的に変更しています。普通に起動すると、プロジェクトのディレクトリはTomcatの公開ディレクトリにはなっていませんから表示は出来ません。

通常、Eclipseで作成したWebアプリケーションは、WARファイル(Webアーカイブ)として書き出し、それをデプロイします。Eclipseの「エクスポート」メニューでWARファイルを作成し、そのファイルをTomcatの「webapp」フォルダに入れてください。これで公開できるはずです。

Qstruts2のchainで値の受け渡しができない

Java 6 Update 22
struts2.2.1
です。

次のとおり各クラスとstruts.xmlを作成しました。
Top_guestLoginアクションを実行してHelloUserクラスに遷移することはできましたが、変数isGuestModeの値が受け渡しされません。

public class Top implements SessionAware {
private boolean isGuestMode = false;
public boolean getIsGestMode() {
return isGuestMode;
}
public String guestLogin() throws Exception {
isGuestMode = true;
return "success";
}
}

public class HelloUser {
private boolean isGuestMode;
public boolean getIsGuestMode() { return isGuestMode; }
public void setIsGestMode(boolean b){
isGuestMode = b;
}
public String execute() throws Exception {
return "success" ;
}
}


struts.xml
<package name="example" extends="struts-default">
<action name="HelloUser" class="example.HelloUser">
<result>/example/HelloUser.jsp</result>
</action>
<action name="Top_guestLogin" method="guestLogin" class="example.Top" >
<result name="success" type="chain" >HelloUser</result>
</action>
</package>

何方かアドバイスをお願い致します。

Java 6 Update 22
struts2.2.1
です。

次のとおり各クラスとstruts.xmlを作成しました。
Top_guestLoginアクションを実行してHelloUserクラスに遷移することはできましたが、変数isGuestModeの値が受け渡しされません。

public class Top implements SessionAware {
private boolean isGuestMode = false;
public boolean getIsGestMode() {
return isGuestMode;
}
public String guestLogin() throws Exception {
isGuestMode = true;
return "success";
}
}

public class HelloUser {...続きを読む

Aベストアンサー

2.2.2でfixされるそうです。

参考URL:https://issues.apache.org/jira/browse/WW-3488

QStruts2のifタグについて

いつもお世話になっております。

現在Struts2の学習を行っているのですが、
iteratorでlistの中のmapの値を取得しているのですが、
データを表示させるか判定に使用するifのタグの条件に
propertyタグで取得した値を使用としたら、
正しく判定されませんでした。
どうしたらifタグのtest属性内でpropertyタグを使用できるでしょうか?

<table>
<s:iterator id="categoryList" value="categoryList" status="rowstatus" >
<s:property value="CATEGORYNAME"/>
<table border="3">
<s:iterator id="categoryTopicList" value="categoryTopicList" status="rowstatus" >
<s:if test='<s:property value="TCID"/> == <s:property value="CATEGORYID"/>'>
<tr>
<td><s:property value="CATEGORYID" /></td>
<td><s:property value="TCID" /></td>
<td><s:property value="TOPICNAME" /></td>
<td><s:property value="PROCEDURE"/></td>
</tr>
</s:if>
</s:iterator>
</table>
</s:iterator>

というようにjspは記述しています。
ifタグを使わずに表示させると値は取得されていたのでDBエラー等ではありませんでした。
使用しているstruts2のバージョンは2.0.14です。

ifタグにpropertyタグの値を条件として記述する方法を教えてください。
よろしくお願いします。

いつもお世話になっております。

現在Struts2の学習を行っているのですが、
iteratorでlistの中のmapの値を取得しているのですが、
データを表示させるか判定に使用するifのタグの条件に
propertyタグで取得した値を使用としたら、
正しく判定されませんでした。
どうしたらifタグのtest属性内でpropertyタグを使用できるでしょうか?

<table>
<s:iterator id="categoryList" value="categoryList" status="rowstatus" >
<s:property value="CATEGORYNAME"/>
<table border="3">
<s:iterator id="categoryTopic...続きを読む

Aベストアンサー

<s:if test="#categoryTopicList.TCID == #categoryTopicList.CATEGORYID">
でどうでしょう?
#categoryTopicListは、idに指定してある名前です。

ですから、
<s:iterator id="categoryTopic" value="categoryTopicList" status="rowstatus" >
とした場合は、
<s:if test="#categoryTopic.TCID == #categoryTopic.CATEGORYID">
になります。

QStruts2でアプリが実行できません

eclipse上でtomcatサーバーを起動して実行しています。

実行しようとすると以下のようなエラーが出ます。

There is no Action mapped for namespace / and action name STRUTS2SMPTOP.

実行URLは「http://localhost:8080/DevLearning/STRUTS2SMPTOP.action」で
DevLearningプロジェクトを呼ぶようにしています。

web.xmlでsrc.main.java.jp.co.isense.devlearning.action内のアクションクラスを呼び出すようにしています。

<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
<init-param>
<param-name>actionPackages</param-name>
<param-value>src.main.java.jp.co.isense.devlearning.action</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

web.xmlの設定の仕方が悪いのでしょうか、実行URLが悪いのでしょうか。

eclipse上でtomcatサーバーを起動して実行しています。

実行しようとすると以下のようなエラーが出ます。

There is no Action mapped for namespace / and action name STRUTS2SMPTOP.

実行URLは「http://localhost:8080/DevLearning/STRUTS2SMPTOP.action」で
DevLearningプロジェクトを呼ぶようにしています。

web.xmlでsrc.main.java.jp.co.isense.devlearning.action内のアクションクラスを呼び出すようにしています。

<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts...続きを読む

Aベストアンサー

以下いずれか

1.ActionClass 名が命名規約にのっとっていない。
2.struts.xml の設定


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング