• 締切済み

struts executeで例外をスルーする理由

Struts2.2.3のサンプルコードをダウンロードしたのですが どれも以下のようにexceptionをスルーするようにしていますが 必須ではないはずです。あえてスルーを明記する理由を教えてください。   public String execute() throws Exception { 

  • Java
  • 回答数1
  • ありがとう数0

みんなの回答

回答No.1

サンプルって、struts2-showcaseですかね。 試しにthrows Exceptionを削ってコンパイルしてみればわかると思いますが、 同メソッド内で呼んでいる他の処理(Daoとか、派生クラスでoverrideするexecuteとか)から 例外が投げられるので、throwしないんだったら自前でcatchする必要があります。

関連するQ&A

  • tomcat(struts)で起動時に処理を行いたい

    strutsでhttp://localhost:8080/test/test.do というように呼び出せば、以下のexecuteメソッドが呼ばれるわけですが、 public ActionForward execute(ActionMapping map, ActionForm fm, HttpServletRequest req, HttpServletResponse response) throws Exception {   ++処理++ } ここでおこなう処理をアプリ読み込み時つまりTomcat起動時に 共通の処理を行いたいのですが、何か方法はありませんでしょうか。 お願いします。

    • ベストアンサー
    • Java
  • struts2の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
  • Struts2でのStaticイニシャライザ

    Struts2でのインターセプターにてStaticイニシャライザを実行するとエラーになってしまいます。 ファイルの絶対パスを取得しようとしています。 以下がそのコードなのですがTomcat再起動時にイニシャライザが実行され getRealPath()の部分で例外が発生し、java.lang.ExceptionInInitializerError が発生します。 同じコードをintercept()メソッド内に記述した場合は例外が発生せず絶対パスを取得することが できます。どなたか原因及び対処方法がおわかりになられますでしょうか。 public class CheckValueInterceptor extends AbstractInterceptor { private static final long serialVersionUID = 1L; //ファイルの絶対パスの取得 static { ServletContext context = ServletActionContext.getServletContext(); String path = context.getRealPath("/WEB-INF/Test.txt"); } public String intercept(ActionInvocation invocation) throws Exception { } }

    • ベストアンサー
    • Java
  • 「Struts使用中」XMLからデータ取得

    FormBeanにセットされた値を取得して、その値を元に一致するデータをXMLからとってきてそれらをテキストに落とし込む。という動作です。 最初はFormBeanにセットされた値をそのままテキストに落とし込むだけだったので楽にできて正常に動いていましたが、「XMLからとってくる」という動きを追加しようとしたところうまくいきません。 public class Test extends Action { (1) public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse res) {   FormBeanからキーになる値をとってくる。 } (2) public static void main(String[] args) throws Exception { Document document = DocumentBuilderFactory.newInstance()  キーとなる値を元にXMLからデータ検索し、値を取得 } (3) public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse res) {   そのほかのFormBeanの値をとってきて(2)で取得した値と一緒にテキストに落とし込み、returnで処理終了のjspを表示させる }  public ActionForward executeが(1)と(3)で2回でているからコンパイルエラーがでるのだとわかるのですが、その他の記述方法がわかりません。  ネットでいろいろ探したのですが、XMLparserのサンプルやStrutsのサンプルはあるのですが、2つ一緒のサンプルが見つからないので困っています。  ご存知の方よろしくお願いいたします。

    • ベストアンサー
    • Java
  • Struts2のファイルアップロードにて

    質問させて頂きます。 Struts2にてファイルアップロードの送信フォームを作成したところ Unable to load bean org.apache.struts2.dispatcher.multipart.MultiPartRequest (jakarta) - [unknown location] とのエラーが発生してファイルをアップロードすることができませんでした。 ビルドパスはjarファイルを読み込むことでインポートしているのですが、 このエラー文が発生する原因はなんなのでしょうか。 -----------------jsp画面-------------- <s:form name="write" action="doUpload" method="POST" enctype="multipart/form-data"> <s:file name="upload" label="File"/> <s:submit value="アップロード" /> </s:form> ----------------サーブレット------------- public class FileUploadTest extends ActionSupport{ private File upload; private String uploadContentType; private String uploadFileName; private String fileCaption; public String execute() throws Exception { return SUCCESS; } ※各セッターとゲッターは省略 ----------------struts.xml---------------- <action name="doUpload" method="upload" class="DB.FileUploadTest"> <result name="true" >/uploadTest.jsp</result> <result name="error">/uploadForm.jsp</result> </action> と記述しております。 どうかエラー原因のご教授よろしくお願いします。

  • strutsのstruts-config.xmlでのエラーメッセージ

    こんばんは strutsのエラーメッセージ表示で困っています。 javaでthrowしてstruts-config.xmlのexceptionで エラーを表示します。 以下のようにコーディングしてあり、 key999に定義してあるメッセージを表示することはできます。 しかしmessagesにセットしたメッセージを表示することができません。 messagesにセットしたメッセージを表示するにはstruts-config.xmlの keyはどのように設定すればよいのでしょうか? よろしくお願いします。 *struts-config.xml <exception key="999" type="myException" path="xxxxxxxxxx.jsp" handler="myExceptionHandler"/> *java public ActionForward hoge( ActionMapping map, ActionForm form, HttpServletRequest req, HttpServletResponse res ) throws Exception { try { return map.findForward("XXXXX"); } catch (myException e) { ActionMessages messages = new ActionMessages(); messages.add("error" ,new ActionMessage("001","エラー")); saveMessages(req,messages); throw e; } }

  • localhostに:8080をつけないとStrutsは動かない?

    Strutsを勉強しております。 書籍のサンプルソースを解析している状況ですが、疑問に思ったことがあります。 書籍には以下のアドレスにアクセスしてサンプルを動かせとあります。 http://localhost:8080/1-1/view/Hello.jsp ここでlocalhostの後の8080は必須なのでしょうか? 8080を外すとjspファイルの表示だけはできるのですが、Sturtuとしての処理は動きませんでした。 Strutsを勉強して先には自分で作ったHPを公開したいと思っていますが、8080をつけなければならないとなるとカッコが悪いなぁと心配しています。 どなたかご存知の方がおりましたら教えてください。

    • ベストアンサー
    • Java
  • strutsのhtml:linkの使い方

    html:linkを使用してJSPを表示した際に、前のフォームのプロパティ値(ここではstaffNumberの値)を取得したいのですが,うまくいきません。 同じ処理をhtml:submitで実行すると取得できています。 その違いを教えて頂きたいのです。 以下がそのコードです。 【struts-config】 <form-bean dynamic="true" name= "loginForm" type="org.apache.struts.validator.DynaValidatorForm"> <form-property name = "staffNumber" type= "java.lang.String" /> </form-bean> <action name="loginForm" path="/login" scope="request" type="login.action.LoginAction" validate="false"> <forward name="success" path="/login.jsp" /> </action> 【login.jsp】 <html:form action="/login">  <html:text property="staffNumber" size="10"maxlength="8"/> <html:link action="/login">testlink</html:link> <html:submit value="test"/> </html:form> 【LoginAction】 public class LoginAction extends Action{ public ActionForward execute (ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse res) throws Exception{ DynaValidatorForm loginForm =(DynaValidatorForm) form; String staffNumber=(String)loginForm.get("staffNumber"); System.out.println(staffNumber); return (mapping.findForward("success")); } } linkの処理で同じJSPを表示していますが,前のプロパティ値を取得しているかをログで確認する事を優先しているのでそのようにしています。 質問の意味がわからない、ソースの不足等ありましたら御指摘下さい。 宜しくお願いします。

    • ベストアンサー
    • Java
  • Struts2のiteratorタグの使い方

    Struts2でiteratorタグを使用したいのですがJSPでの記述方法がわからず困っています。 アクションクラス、JSPでは以下のように記述しております。 検索するとActionクラス内でArrayListに独自のクラスが格納されている状態での記述方法 はサンプルとしてあったのですがArrayListにStringが格納されていた場合の記述方法に 関しての記載が見つかりませんでした。そのため現在、JSP側ではsession.getattribute()を 使用してしのいでいる次第です。 public ArrayList<String> getDatalist() { return this.datalist; } public void setDatalist(ArrayList<String> datalist) { this.datalist = datalist; } public String execute() { ArrayList<String> datalist = bdf.getDataList(); return "success";    } 以下、JSP側の記述 <s:iterator value="datalist"> ここの記述が不明 </s:iterator>

    • ベストアンサー
    • Java
  • JDBCプログラミング

    以下のプログラムは、DBkanri.javaというファイル名で、データベースに接続してデータを取得し、取得したデータを表示させるJSPファイルとともに使います。これを、テーブルの作成、レコード追加、フィールド 追加等の更新をし、更新後のデータも取得できるようなプログラムにアレンジしたいのですが、 どなたか、アドバイスください。お願いします。 ちなみに環境は、tomcat3.2.1 JDK1.3.1_02MS Access2000です。 package Kadai; import java.sql.*; public class DBkanri{ private String driver; private String url; private String user; private String password; private Connection connection; private Statement statement; private ResultSet resultset; public DBkanri(){ driver="sun.jdbc.odbc.JdbcOdbcDriver"; url="jdbc:odbc:CONNECTION"; user="abcde"; password="12345"; } public synchronized void open() throws Exception { Class.forName(driver); connection=DriverManager.getConnection(url, user, password); statement=connection.createStatement(); } public ResultSet getResultSet(String sql) throws Exception { if ( statement.execute(sql) ){ return statement.getResultSet(); } return null; } public void execute(String sql) throws Exception { statement.execute(sql); } public synchronized void close() throws Exception { if( resultset != null ) resultset.close(); if( statement != null ) statement.close(); if( connection != null ) connection.close(); } }

専門家に質問してみよう