Note that there are some explanatory texts on larger screens.

plurals
  1. POStruts 2 FileUpload not working
    text
    copied!<p>I have a struts 2 application where 2 pages have struts file upload. One works perfectly while the other just wont work. I gives me "Invalid field value for field "secImage".</p> <p><strong>Here is the code for JSP</strong></p> <pre><code>&lt;%@page contentType="text/html" pageEncoding="UTF-8"%&gt; &lt;%@taglib prefix="s" uri="/struts-tags" %&gt; &lt;%@taglib uri="http://displaytag.sf.net" prefix="display" %&gt; &lt;html&gt; &lt;head&gt; &lt;/head&gt; &lt;body&gt; &lt;%@ include file="header.jsp" %&gt; &lt;s:form action="Test" method="POST" style="width:90%;"&gt; Another form here...... &lt;/s:form&gt; &lt;s:form action="Test" method="POST" enctype="multipart/form-data"&gt; &lt;s:push value="secVul"&gt; &lt;s:hidden name="vulId" /&gt; &lt;s:hidden name="scanHistory.scanId" /&gt; &lt;s:textfield name="protocol" label="Protocol" style="width: 80%;" /&gt; &lt;s:textarea name="description" label="Description" style="width: 80%;" /&gt; &lt;s:textarea name="solution" label="solution" /&gt; &lt;more form elements here&gt;sdfasdfasdfasd &lt;s:file name="secImage" label="Image to Upload" size="40"/&gt; &lt;s:submit value="Add/Update" align="center"/&gt; &lt;/s:push&gt; &lt;/s:form&gt; &lt;%@ include file="footer.jsp" %&gt; &lt;/body&gt; &lt;/html&gt; </code></pre> <p><strong>Here is the struts configuration</strong></p> <pre><code>&lt;interceptor-ref name="fileUpload"&gt; &lt;param name="maximumSize"&gt;909715200&lt;/param&gt; &lt;param name="allowedTypes"&gt; text/xml,application/octet-stream,image/png,image/gif,image/jpeg,image/pjpeg &lt;/param&gt; &lt;/interceptor-ref&gt; &lt;interceptor-ref name="defaultStack" /&gt; &lt;action name="Test" method="saveOrUpdate" class="com.Test"&gt; &lt;result name="success" type="redirect"&gt;listVulsMGR&lt;/result&gt; &lt;result name="input"&gt;/WEB-INF/pages/secVuls.jsp&lt;/result&gt; &lt;result name="error"&gt;/WEB-INF/pages/secVuls.jsp&lt;/result&gt; &lt;/action&gt; </code></pre> <p><strong>Action Class Code:</strong></p> <pre><code>public class Test extends ActionSupport implements ModelDriven&lt;Test&gt;, Preparable,ServletRequestAware { private HttpServletRequest servletRequest; private static final Logger logger = Logger.getLogger(ListVulsActions.class); private File secImage; private String secImageContentType; private String secImageFileName; private HashMap userFilters = new HashMap(); public Test() { } public String saveOrUpdate() { try { ServletContext context = ServletActionContext.getServletContext(); String filePath = context.getInitParameter("UploadDirectory"); logger.debug("Server path:" + filePath); logger.debug("this.secImageFileName " + this.secImageFileName); File fileToCreate = new File(filePath, this.secImageFileName); FileUtils.copyFile(this.secImage, fileToCreate); } addActionMessage("successfully added/updated."); return SUCCESS; } catch (Exception ex) { logger.error("Error in Test", ex); addActionError("Error occured in Test. Please contact your administrator.\n" + ex.getMessage()); return ERROR; } } public File getSecImage() { System.out.println(secImage.getName()); return secImage; } /** * @param secImage the secImage to set */ public void setSecImage(File secImage) { System.out.println(secImage.getName()); this.secImage = secImage; } /** * @return the secImageContentType */ public String getSecImageContentType() { System.out.println(secImageContentType); return secImageContentType; } /** * @param secImageContentType the secImageContentType to set */ public void setSecImageContentType(String secImageContentType) { System.out.println(secImageContentType); this.secImageContentType = secImageContentType; } /** * @return the secImageFileName */ public String getSecImageFileName() { System.out.println(secImageFileName); return secImageFileName; } /** * @param secImageFileName the secImageFileName to set */ public void setSecImageFileName(String secImageFileName) { System.out.println(secImageFileName); this.secImageFileName = secImageFileName; } @Override public void setServletRequest(HttpServletRequest servletRequest) { this.servletRequest = servletRequest; } </code></pre> <hr> <p>Not sure what I am doing wrong here. Would appreciate any help/hints</p> <p>-- </p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload