ユーザーがレポート テーブルを更新し、同時にレポートをアップロードできるようにするサーブレットがあります。ユーザーがドキュメントをアップロードできるようにし、送信日などの他の詳細でテーブルを更新できるようにするコードを作成しました。ただし、ユーザーが常にドキュメントをアップロードする必要があるわけではありません。この場合、ユーザーがレポートの詳細を編集し、後で戻ってファイルをアップロードできるようにする必要があります。つまり、ユーザーはフォームを送信せずに送信できます。ファイルを選択しても、テーブルは更新されます。動かないのはこの部分です。ユーザーがファイルを選択して何らかの変更を加えた場合。コードは機能します。ユーザーがファイルを選択せずにフォームを送信しようとすると、サーブレットにリダイレクトされますが、空白です。スタックトレースなし。エラーはスローされません。以下は、サーブレットにあるコードの一部です。
if(param.equals("updateschedule"))
{
String[] allowedextensions = {"pdf","xlsx","xls","doc","docx","jpeg","jpg","msg"};
final String path = request.getParameter("uploadlocation_hidden");
final Part filepart=request.getPart("uploadreport_file");
int repid = Integer.parseInt(request.getParameter("repid_hidden"));
int reptype = Integer.parseInt(request.getParameter("reporttype_select"));
String webdocpath = request.getParameter("doclocation_hidden");
String subperiod = request.getParameter("submitperiod_select");
String duedate = request.getParameter("reportduedate_textfield");
String repname = request.getParameter("reportname_textfield");
String repdesc = request.getParameter("reportdesc_textarea");
String repinstr = request.getParameter("reportinst_textarea");
int repsubmitted = Integer.parseInt(request.getParameter("repsubmitted_select"));
String datesubmitted = request.getParameter("reportsubmitdate_textfield");
final String filename = getFileName(filepart);
OutputStream out = null;
InputStream filecontent=null;
String extension = filename.substring(filename.lastIndexOf(".") + 1, filename.length());
if(Arrays.asList(allowedextensions).contains(extension))
{
try
{
out=new FileOutputStream(new File(path+File.separator+filename));
filecontent = filepart.getInputStream();
int read=0;
final byte[] bytes = new byte[1024];
while((read=filecontent.read(bytes))!=-1)
{
out.write(bytes,0,read);
}
String fulldocpath = webdocpath+"/"+filename;
boolean succ = icreditdao.updatereportschedule(repid, reptype, subperiod, repname, repsubmitted,datesubmitted, duedate,fulldocpath, repdesc, repinstr);
if(succ==true)
{
response.sendRedirect("/webapp/Pages/Secured/ReportingSchedule.jsp?msg=Report Schedule updated successfully");
}
}
catch(Exception ex)
{
throw new ServletException(ex);
}
}
私はまだ自分自身にjavaeeを教えています。どんな助けでも大歓迎です。また、他の選択肢にも開かれています。jquery を使用してファイルが選択されているかどうかを検出し、別のコード セットを使用することを考えました。例えば
if(param.equals("updatewithnofileselected"))
{//update code here}
しかし、より良い解決策が必要だと思います。jdk6、servlet3.0を使用。