1

私のJSPでは、次のことを行います:

<!-- Bank manager's permissions -->

<!--more stuff goes here -->
<fieldset>
  <legend>To open a new account</legend> 
  <form action="blablabla">    
      <input type="hidden" name="hdField" value="myValue" />  // note I pass a "myValue" as string 
      <a href="employeeTransaction1">Press here to continue</a>  
  </form>
</fieldset>

そして、私のサーブレットでは、隠し入力を取得します:

@WebServlet("/employeeTransaction1")
public class Employee1 extends HttpServlet {
    private static final long serialVersionUID = 1L;


    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
    {
        String getHiddenValue=request.getParameter("hdField");
        System.out.println("Hidden field Value :"+getHiddenValue);
        // forwards to the page employeeOpenNewAccount.jsp
        request.getRequestDispatcher("/WEB-INF/results/employeeOpenNewAccount.jsp").forward(request, response);
    }



}

そしてSystem.out.println生成します:nullコンソールで

null渡す実際の値ではないのはなぜですか?

よろしく

編集:

に変更した後:

<fieldset>
  <legend>To open a new account</legend> 
  <form action="/employeeTransaction1" method="GET">
      <input type="hidden" name="hdField" value="myValue"/>
      <a href="employeeTransaction1">Press here to continue</a>  
  </form>
</fieldset>

Anullは引き続きコンソールに表示されます。

4

2 に答える 2

4

あなたがやろうとしているのは、フォームをサーバーに送信することです。しかし、実際には、あなたはそうしません。GET リクエストを発行するだけです (ユーザーがリンクをクリックしたとき: <a href="employeeTransaction1">Press here to continue</a>) 。

フォームを送信する場合は、フォーム タグの属性を適切に設定し、送信ボタンをフォームに追加してください。

 <form action="/employeeTransaction1" method="GET">
 ...
 <input type="submit" value="Submit" />
 ...
 </form>

フォームの送信方法に応じて、method="GET"パラメーターを に変更method="POST"し、サーブレットでdoPost()メソッドでフォームを処理するようにします。

または、目的が from をサーバーに送信することではなく、非表示の入力の値を渡すことだけである場合は、GET 要求でエンコードされたパラメーターとしてその値を追加する必要があります。何かのようなもの:

  /employeeTransaction1?hdField=myValue

これを実現するには、何らかのクライアント処理が必要です。つまり、ユーザーがリンクをクリックしたときに、非表示の入力を get に追加してから、リクエストを発行する必要があります。

于 2012-08-11T09:58:07.040 に答える
2

hrefタグを使用してもフォームは送信されません。つまり、フォームで定義されたパラメータがリクエストに渡されません。代わりに、 input type="submit"またはボタンタグを使用する必要があります。また、フォーム アクションが @WebServlet 定義と一致していることを確認してください。

<fieldset>
  <legend>To open a new account</legend> 
  <form action="/employeeTransaction1">    
      <input type="hidden" name="hdField" value="myValue" />  // note I pass a "myValue" as string 
      <input type="submit" value="Submit" />
  </form>
</fieldset>
于 2012-08-11T10:28:13.137 に答える