2011-12-22 11 views
0

私はStruts 1.2とJ2EE 1.4を使用しています。私はStrutsとJavaにはかなり新しいので、うまくいけば私の問題のための簡単な解決策があります。カスタム変数をJavaのStrutsアプリケーションのリクエストに保存するにはどうすればよいですか?

<div class="success"> 
    HTML for success 
</div> 
<div class="error"> 
    <p>We are experiencing technical difficulties at this time. Please try your request again later.</p> 
</div> 
<div id="contact-form-block"> 
    <html:form action="/reg" id="contactform"> 

    <br /><html:text property="firstName"/><html:errors property="firstName"/> 
     <p><input type="image" src="images/reset_btn.png" id="reset" name="reset" alt="Reset" /><input type="image" src="images/submit_btn.png" id="submit" name="submit" alt="Submit" /></p> 
    </div> 

</html:form> 
</div> 

元々成功したエラーと連絡先divはすべて非表示になっています。かかわらず、検証があったかどうかの

$('.success, .error, .success_header, .error_header').hide(); 
$('form#contactForm').show(); 

だから、私の行動に、私は同じ入力forwardに戻ってすべてのものを送ることができるようにしたい:私はコンタクトフォームは、このようなモーダルダイアログボックスでクリックに表示していエラーかどうか。 しかし、私は表示すべきダイアログを参照してチェックするのjQueryでのJSPページのチェックをしたい

  1. 成功ダイアログOR
  2. 接触 - 私たちのエラー
  3. との対話

    if ("reg".equalsIgnoreCase(contactUsForm.getAction())) {    
    
         ActionMessages errors = getErrors(request); 
    
         errors = validate(contactUsForm); 
    
         if (errors.isEmpty()) { 
    
          //Save some variable to the request/response to say that registration was successful 
    
         } else { 
          //save something to say that registration was not successful 
          saveErrors(request, errors); 
         } 
        } 
        return actionForward; 
    

    で変数を設定する方法はあります:ここで

は自分の行動であります ActionForwardの後に jspページで取得できる Actionが呼び出されます。好ましくは、 $(document).ready関数のjQueryでアクセスできますか?

+0

提案:struts2と一緒に行くと、それはStruts1とはまったく異なり、最終的にStruts2に切り替わります。 Struts2はStruts1の以前の経験を必要とせず、したがってそれを学ぶことはとても簡単です。 –

+0

@ XCoder私はできると思います。残念ながら、私はこれに対してどの技術を使用できるかを決めることはできません。 – Rondel

答えて

1

通常のStrutsおよび/またはサーブレット仕様メカニズムを使用します。

エラーがあるかどうかを確認することができます。それらは"org.apache.struts.action.ERROR"キーの下の要求に格納されます。あなたは特に何かを追加する必要はありませんが、本当にしたい場合は、あなたがすることができます。

私は要求属性として格納されるように非フォームデータを好む:

request.setAttribute("haveErrors", true); // Or false, obviously. 

あなたは、あなたのJSP内の要求からデータを取得する必要があり、およびJavaScriptとして解釈:

$(function() { 
    // Use normal JSP EL; haveErrors should display as a bare string, 
    // which is valid JS. Can modify as necessary if need be. 
    var haveErrors = ${haveErrors}; 
}); 
+0

ありがとうございます。これはトリックを行う必要があります。おそらくエラーの '要求'をチェックする方が合理的ですが、 'setAttribute'は私が手に入れたいいくつかのものを節約するのに役立ちます。 – Rondel

+0

@Rondelまた、キー値に定数を使用することをお勧めします。ちょうどそれを単純にしたいと思った。行動様式のビューのためにすべてのものを保持する人もいます。それは好みの問題です。申し訳ありませんが、そのような古代の技術を使用する必要があります。 –

1

質問を正しく理解できたかどうかは分かりませんが、もしあなたが意味するのであれば、Actionクラス内の変数をJSPに渡す方法がありますか?はい、あります。 Actionクラスで

以下のような要求コンテキストに変数を設定return文の前に:

request.setAttribute("successfulRegistration", "true"); 

は常にJSPは、サーバー側でコンパイルされると、その後、任意のHTMLは、その前に応答を追加したことを覚えておいてくださいレンダリングされるブラウザまたはjavascriptが処理されます。

<script type="text/javascript"> 
var success = <%=request.getAttribute("successfulRegistration")%> 
</script> 

JavaScriptで成功変数はすでにその変数を持っているでしょう:だから、一例として、JSPで

:変数は、それがに短縮することができStringであるための

<script type="text/javascript> 
var success = <% (String) request.getAttribute("successfulRegistration"); %> 
</script> 

サーバー側のJSPコンパイル時に割り当てられてからブラウザに到達します。

JSPは、リクエスト、セッション、およびアプリケーションコンテキストを介してActionクラスとデータを共有できます。

Request - request.getAttribute(...) 
Session - request.getSession().getAttribute(...) 
Application - application.getAttribute(...) 

Actionクラスと同様に、これらは設定できます。アプリケーションコンテキストはServletContextクラスによってアクセスされます。

+0

ありがとうございます。これは役立ちます – Rondel

関連する問題