2012-05-09 15 views
0

私はweb appのフォーラムを作成しています。メインページには、新しいスレッドを検索して作成するためのトピックとボタンがすべて表示されます。ユーザーがこの最後のボタンをクリックすると、新しいトピックのデータを入力するフォームが表示されます。ユーザーがクリックを送信すると、私はDBで、この新しいスレッドを格納し、私はメインページを示しアクションにリダイレクト:struts 2リダイレクトjava.lang.IllegalStateException

< action name="showForum" class="es.busco.colegio.actions.ForumAction" method="show"> 
    < result name="success">/WEB-INF/jsp/forum.jsp< /result> 
< /action> 

< action name="newTopic" class="es.busco.colegio.actions.ForumAction" method="newTopic"> 
    < result name="success">/WEB-INF/jsp/newTopic.jsp< /result> 
< /action> 

< action name="createTopic" class="es.busco.colegio.actions.Forumction" method="insert"> 
    < result name="success" type="redirect">http://www.buscocolegio.com/Colegio/showForum.action< /result> 
</ action> 

問題は、新しいトピックをDBに二度挿入し、ログjava.lang.IllegalStateException

にされています

私はそれが二回挿入されています理由です、BDでの挿入よりも、サービスコールオブジェクトを実行した後、プログラムの実行がバックメソッドの初めに来る参照してデバッグするとき:

try{ 
     Date d=new Date(); 
     SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); 
     String s=sdf.format(d);   
     Date d1=sdf.parse(s); 
     topic.setDate(d1); 
     topic.setText(topic.getText().replaceAll("\n", "<br>")); 
     topicService.createTopic(topic); 
    }catch (Exception ex){ 
     logger.error("Error: "+ex,ex); 
     return Action.ERROR; 
    } 
    return Action.SUCCESS; 
} 

のでtopicServiceを実行した後、 .createTopic (トピック);それはDate d = new Date();に戻ります。

誰でも知っているのはなぜですか?

+0

あなたはアプリケーションのデバッグを試みて、なぜこれが起こっているのかを知りませんでした。 –

+0

また、FirefoxやChromeではなく、IE上でのみ発生します... – user1383951

答えて

0

あなたのJSPコードが表示されていない場合は、これが起こっているかどうかはわかりませんが、IEで2回、Firefox、Chrome、Operaで1回しか実行されませんでした。

私たちのエンジニアの一人がonclickイベントをボタンをクリックすると消えるフォーム送信ボタンに追加しました。しかし、彼はまた、document.forms[0].submit();コールをjavascriptに含めました。 IE ではのみが原因で、アクションが2回実行されていました。

したがって、通常のHTML <input type="submit" value="Submit" />の上にJavaScriptの送信を呼び出すことで、誤ってフォームを2回送信していないことを確認してください。

関連する問題