1

モーダル内に次のフォームがあります。

    <div id="sazModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="sazModalLabel" aria-hidden="true">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
        <h3 id="sazModalLabel">Upload a Test</h3>
      </div>
      <div class="modal-body">
       <form method=POST id='sazForm' class="form-horizontal" action="upload.jsp" enctype='multipart/form-data'>
          <div class="control-group">
            <label class="control-label" for="inputEmail">Email</label>
            <div class="controls">
              <input name="email" type="text" id="inputEmail" placeholder="Email">
            </div>
          </div>
          <div class='control-group'>
            <label class='control-label' for='inputHost'>Test Server</label>
            <div class='controls'>
                <input name="hstnme" type='text' id='inputHost' placeholder='Hostname'>
            </div>
          </div>
          <div class='control-group'>
            <label class='control-label' for='inputPort'>Port Number</label>
            <div class='controls'>
                <input name="port" type='text' id='inputPort' placeholder='Port'>
            </div>
          </div>
          <div class="control-group">
            <label class="control-label" for="fileUploadButton">Saz File</label>
            <div class="controls">
              <input name="saz" type="file" id="fileUploadButton" placeholder="Saz File"/>
            </div>
          </div>
          <div id='modalfooter'>
            <input class="btn btn-success" type='submit' id='goButton' value="Go!"/>
            <button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
            </div>
        </form>
      </div>
    </div>

そして、次のjsp(upload.jsp)に送信したいと思います:

<%@ page import="java.io.*,java.util.*, javax.servlet.*"%>
<%@ page import="javax.servlet.http.*"%>
<%@ page import="org.apache.commons.fileupload.*"%>
<%@ page import="org.apache.commons.fileupload.disk.*"%>
<%@ page import="org.apache.commons.fileupload.servlet.*"%>
<%@ page import="org.apache.commons.io.output.*"%>

<%
   System.out.println(request.getParameter("hstnme"));

   Enumeration<String> paramNames = request.getParameterNames();

   while(paramNames.hasMoreElements()) {
      String paramName = (String)paramNames.nextElement();
      System.out.print(paramName + " : ");
      String paramValue = request.getHeader(paramName);
      System.out.println(paramValue);
   }
%>

パラメータが適切に渡されないという問題が発生しています。私の System.out は次のように述べています。

null

以上です。他の入力 (email、hstnme、およびポート) を取得していないことは明らかです。null は最初の .getParameter("hstnme") から取得されます

ホスト名は何らかの方法で保護されているのではないかと考え、hstnme に変更しましたが、うまくいきませんでした。また、commons.fileupload を使用すると、4 つのパラメーターすべてが FileItem になりますが、それらの値は一緒に送信されないことにも気付きました。

フォームのパラメータを JSP に渡し、正しく取得するにはどうすればよいですか?

4

2 に答える 2

0

これが問題の修正です。私は自分のマシンでローカルにテストしましたが、うまくいくようです:

HTML フォーム:

<form id='sazForm' class="form-horizontal" action="upload.jsp" enctype='multipart/form-data'>
          <div class="control-group">
            <label class="control-label" for="inputEmail">Email</label>
            <div class="controls">
              <input name="email" type="text" id="inputEmail" placeholder="Email">
            </div>
          </div>
          <div class='control-group'>
            <label class='control-label' for='inputHost'>Test Server</label>
            <div class='controls'>
                <input name="hstnme" type='text' id='inputHost' placeholder='Hostname'>
            </div>
          </div>
          <div class='control-group'>
            <label class='control-label' for='inputPort'>Port Number</label>
            <div class='controls'>
                <input name="port" type='text' id='inputPort' placeholder='Port'>
            </div>
          </div>
          <div class="control-group">
            <label class="control-label" for="fileUploadButton">Saz File</label>
            <div class="controls">
              <input name="saz" type="file" id="fileUploadButton" placeholder="Saz File"/>
            </div>
          </div>
          <div id='modalfooter'>
            <input class="btn btn-success" type='submit' id='goButton' value="Go!"/>
            <button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
            </div>
        </form>

アップロード.jsp :

<%@ page import="java.io.*,java.util.*, javax.servlet.*"%>
<%@ page import="javax.servlet.http.*"%>
<%
   System.out.println(request.getParameter("hstnme"));

   Enumeration<String> paramNames = request.getParameterNames();

   while(paramNames.hasMoreElements()) {
      String paramName = (String)paramNames.nextElement();
      System.out.print(paramName + " : ");
      String paramValue = request.getParameter(paramName);
      System.out.println(paramValue);
   }
%>

要するに、修正は次のとおりです。

  • フォームから HTTP メソッドを削除しています。
  • を使用して upload.jsp の値を取得するgetParameter

お役に立てれば。

于 2013-06-08T14:41:03.153 に答える