【问题标题】:How to make a file upload in a form required in Struts 2如何以 Struts 2 所需的形式上传文件
【发布时间】:2018-07-19 03:52:22
【问题描述】:

我有一个 JSP,它是一个表单,它只是一个文件上传和一个提交按钮。

在动作类的 validate 方法中,我检查 File 对象是否为空。

条件语句的计算结果为 true,但不会显示字段错误,而是程序稍后会遇到 NullPointerException。这就是我试图通过验证来缓解的问题。

我也尝试在 try catch 中捕获异常,但这只是将罐子踢得更远,并且为 validate 方法抛出异常。

Struts.xml

            <!-- Displays a form for adding items -->
        <action name="addItemsForm">
            <result name="success">addItems.jsp</result>
        </action>


        <!-- Adds a TSV of items to the DB -->
        <action name="addItems" class="AddItems">
            <interceptor-ref name="fileUpload"/>
            <result name="success" type="redirectAction">getItems</result>
            <result name="input">addItems.jsp</result>
        </action>


JSP:

<s:form theme="simple" namespace="/my/space" action="addItems" method="POST" enctype="multipart/form-data">

    <div class="divTable">
        <div class="divTableRow">
            <div class="divParameterEntry">
                TSV File:
            </div>
            <div class="divParameterEntry">
                <s:file accept=".tsv" name="items"/>
            </div>
            <div class="divTableCell">
                <s:submit value="submit" name="submit" cssStyle="width: 80px; height:30px;"/>
            </div>
        </div>
    </div>

</s:form>

<br/>

<s:if test="hasFieldErrors()">
    <span style="color:red;">
    <s:fielderror />
    </span>
</s:if>


动作类的验证方法:

private File items;

public void validate() {
    if (items == null)
        addFieldError("items", "Please upload a file before submitting");

    path = items.getAbsolutePath(); // The NullPointerException stems from here
}

【问题讨论】:

    标签: java file-upload struts2


    【解决方案1】:

    对于这个问题,实际上有一个非常简单的解决方案,我根本不知道,只是在做其他事情时偶然发现。

    我可以通过将 required 添加到 JSP 中的 struts 文件标记来强制上传,如下所示:

    <s:file accept=".tsv" name="items" required="required"/>
    

    这可以防止用户在没有上传文件的情况下提交表单,并且不需要 javascript、ajax 等...

    要了解为什么将其设置为“必需”而不是 true,请参阅 this post

    【讨论】:

      猜你喜欢
      • 2012-06-22
      • 2013-05-13
      • 1970-01-01
      • 2014-10-17
      • 1970-01-01
      • 1970-01-01
      • 2015-01-13
      • 2011-12-14
      • 1970-01-01
      相关资源
      最近更新 更多