-3

フォームにファイルをアップロードしています。そのフォームにtextfieldsは、テキストフィールドにいくつかの値を入力するものも含まれています。アップロードボタンをクリックしてもこの値を維持したい。また、保存ボタンもあります。このボタンをクリックすると、アップロードされたファイルがデータベースに保存されます。誰でも私を助けることができますか?

JSP ファイルは次のとおりです。

<body>
    <form action="./upload" enctype="multipart/form-data" >ID: <input type="text" name="id" value="" />Name: <input type="text" name="name" value="" />
       <input name="uploaded" type="file" />
       <input name="save" type="submit" value="Upload" />

       <input type="submit" value="save1" name="save" /></form>
</body>

サーブレットにビジネスロジックが必要です..

4

3 に答える 3

0

value 属性を使用してファイル フィールド データを保持する規定がないことを確認してください。

このリンクを参照してください

package comunity.stackoverflow.test;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class TestController
 */
public class TestController extends HttpServlet {
    private static final long serialVersionUID = 1L;
public TestController() {
    super();
}

protected void doGet(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
    process(request, response);
}

protected void doPost(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
    process(request, response);
}

private void process(HttpServletRequest request,
        HttpServletResponse response) {
    storeInRequest(request, "id");
    storeInRequest(request, "name");
    storeInRequest(request, "uploaded");

    // write your upload logic here then navigate to the same page;

    try {
        request.getRequestDispatcher("/test.jsp").forward(request, response);
    } catch (ServletException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

}

private void storeInRequest(HttpServletRequest request,String param){
    String val =  request.getParameter(param);
    if(param!=null && !param.isEmpty()){
        System.out.println(val);
        request.setAttribute(param, val);
    }
}

}

standard.jat と jstl.jar を使用する

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form action="upload.do" enctype="multipart/form-data" >
    ID: <input type="text" name="id" value="${id}"/>
    Name: <input type="text" name="name" value="${name}" />
       <input name="uploaded" type="file" />
       <input name="save" type="submit" value="Upload" />

       <input type="submit" value="save1" name="save" /></form>

</body>
</html>

この JSP ファイルを使用します。それはあなたの問題を解決するかもしれません。

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form action="upload.do" enctype="multipart/form-data" >
    ID: <input type="text" name="id" value="${id}"/><br/>
    Name: <input type="text" name="name" value="${name}" /><br/>
    <input type="file" id="selectedFile" style="display: none;" />
    <input type="text" name="uploaded" id="uploaded" value="${uploaded}" readonly="readonly" size="60">
    <input type="button" value="Browse..." onclick="mymethod()" /><br/>
       <input name="save" type="submit" value="Upload" />

       <input type="submit" value="save1" name="save" /></form>

</body>
<script type="text/javascript">
function mymethod(){
    document.getElementById('selectedFile').click();
    var val = document.getElementById('selectedFile').value;
    document.getElementById('uploaded').value = val;
}
</script>
</html>
于 2013-03-11T06:22:01.463 に答える
0

オプションは次のとおりです。

  • データをバックエンドに保持し、フォームに再入力します
  • データをブラウザ内ストレージに保持します ( http://www.w3schools.com/html/html5_webstorage.asp )
  • アップロード フォームを IFRAME に配置する

最も簡単なオプションは IFRAME です。

于 2013-03-11T05:14:11.740 に答える
0

アップロードボタンをクリックしている間、テキストフィールドの値がそこにあるはずだと言っています。あなたはこのことをする必要はありません。デフォルトではそこにあります。あなたはそれが人を苦しめるべきですか?あなたの正確な要件を述べてください。

于 2013-03-11T05:19:42.113 に答える