使用文件上载JSP和Servlet 2.5没有获得Textarea值

时间:2013-12-02 11:19:03

标签: java jsp apache-commons-fileupload servlet-2.5

我正在尝试以JSP形式提交带有文本字段,文本区域,文件字段等的表单。我正在使用此表格的公共文件上传。

这是我的JSP表单:

<form name="add_product_form" id="add_product_form" enctype="multipart/form-data" method="post" action="Product.Add">
    <div id="form-body">
        <div id="lebel">
            <font color="red">*</font>Product Name:
        </div>
        <div id="field">
            <input type="text" name="product_name" id="product_name" value="">
        </div>
        <div id="lebel">
             <font color="red">*</font>SKU No:
        </div>
        <div id="field">
            <input type="text" name="sku_no" id="sku_no" value="">
        </div>
        <div id="lebel">
             <font color="red">&nbsp;</font>In Date:
        </div>
        <div id="field">
            <input type="text" name="in_date" id="in_date" value="">
        </div>
        <div id="lebel">
            <font color="red">&nbsp;</font>Upload Image:
        </div>
        <div id="field">
            <input type="file" name="upload_image" id="upload_image" value="">
        </div>
        <div id="lebel">
            <font color="red">&nbsp;</font>Description:
        </div>
        <div id="field">
            <textarea name="description" id="description"></textarea>
        </div>
        <div id="lebel">
            &nbsp;
        </div>
        <div id="button_field">
            <input type="submit" name="add_product_button" id="add_product_button" value="Add  Product">
        </div>
    </div>
</form>

我使用以下方法获取文本字段的值。

List fileItems = upload.parseRequest(request);
// Process the uploaded file items
Iterator i = fileItems.iterator();

while ( i.hasNext () )
{
    FileItem fi = (FileItem)i.next();
    if ( !fi.isFormField () )
    {
        // Get the uploaded file parameters
        String fieldName = fi.getFieldName();
        String value = fi.getString();
        fileName = fi.getName();
        String contentType = fi.getContentType();
        boolean isInMemory = fi.isInMemory();
        long sizeInBytes = fi.getSize();
        // Write the file
        if( fileName.lastIndexOf("\\") >= 0 )
        {
            file = new File( filePath +
            fileName.substring( fileName.lastIndexOf("\\"))) ;
        }
        else
        {
            file = new File( filePath +
            fileName.substring(fileName.lastIndexOf("\\")+1)) ;
        }
        fi.write( file ) ;
    }
    else
    {
        String name = fi.getFieldName();
        String value = fi.getString();
        if( name.equals("product_name") )
        {
            productName = value;
        }
        else if( name.equals("sku_no") )
        {
            skuNo = value;
        }
        else if( name.equals("in_date") )
        {
            newDateString = value;
        }
        else if( name.equals("description") )
        {
            productDesc = value;
        }
    }
}

但是我没有得到“TextArea”的值,我在我的表单中使用了名称“descripton”。

在提交表单时,有人可以帮助我获取此文本区域的值。

由于

3 个答案:

答案 0 :(得分:2)

它有一些问题。你可以给文本框添加样式,看起来像textarea,这将帮助你

答案 1 :(得分:0)

无法找到直接解决方案。

为了实现这一点,我使用了隐藏字段和jquery。

点击提交按钮后,我在隐藏字段中输入了文本区域的值,然后提交表单。

这是jquery代码:

$('#add_product_button').click(function()
{
        var description = $("#description").val();
        $("#hidden_description").val(description);
        $("add_product_form").submit();
});

答案 2 :(得分:0)

我遇到了同样的问题,我已经解决了! 只需将'textarea'标记放在'input type =“file”....'标记之前,
并且Servlet可以获得textarea值

我不是英语发言者,希望你能理解我的解决方案: - )