2016-06-14 30 views
0

私はJSPファイルでURLパラメータを取得するために以下を使用しました。このJSPファイルは、Strutsバリデータで検証しているフォームのWebページを表します。フォームが最初にロードすると名前parmとはURLパラメータが存在しない場合"request.getParameter"は存在しないURLパラメータの場合は "-1"を返します

<% String tempVal= (String)request.getParameter("parm");%> 

は、tempValパラメータの値がnullです。
次に、フォームに無効なデータが含まれたフォームを送信し、エラーメッセージの検証を行って同じページに移動します(ActionFormクラスのValidateメソッドを実行した後)。
しかし今回はtempValの値は-1です。
ActionFormクラスの私のValidateメソッドは以下の通りです。

@Override 
public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) 
{ 
    ActionErrors errors = null; 
    errors = super.validate(mapping, request); 
    String temp2 = request.getParameter("param3"); 
    if(temp2 == null){ 
     errors.add("some Error"); 
    } 
    return errors; 
} 

この現象が発生する理由は何ですか? ありがとうございます

答えて

0

他の形式でリクエストを受信しようとすると、あなたのURLパラメータは文字列形式でなければなりません。

しかし、あなたのURLパラメータは、文字列の形式でない場合、あなたはあなたを-1与える文字列に変換するObjectからのgetParameterしようと10されているので、私は、 のgetAttribute

ここで同じ出来事を使用することをお勧めします。

最初のページ

//first page: first.jsp 
    <% request.setAttribute("PAGE", "param");%> 
    <jsp:forward page="/second.jsp"/> 

とsecond.jsp:

<%=request.getAttribute("PAGE")%> 

属性がパラメータではないことを知ることが重要です。 属性の戻り値の型はObjectですが、パラメータの戻り値の型はStringです。 getAttribute(String name)メソッドを呼び出すときは、属性をキャストする必要があることに注意してください。

さらに、サーブレット固有の属性はなく、セッションパラメータもありません。

これがあなたを助けてくれることを願っています。

+0

"String"へのキャストは必要ありませんが、私は理解しています。** String tempVal = request.getParameter( "parm"); **はURLパラメータを取得する方法です。この動作の理由はわかりません。 –

関連する問題