java - 我想避免清屏时出现文件太大错误

标签 java file-upload struts2 struts-validation interceptorstack

  • 我有一个带有文件上传选项的页面

    <input type="file" name="fileUpload" />
    

    而且效果很好。

  • 屏幕上还有一个清除按钮,它调用一个方法将所有页面字段重置为其默认值。

  • 我将 @SkipValidationclear() 方法结合使用,这样,如果您清除包含无效数据的页面,就不会收到错误消息。

我的问题是:

if I click to upload a file which is too large and then click the Clear button, I get the "File too large" message, because that is generated by the default-stack (at least that is my understanding) and not by my validation code.

我在方法中使用了 document.getElementById('commentAction').reset(); 但这没有帮助。

如何重置页面而不出现任何错误消息?

日期 根据我收到的建议,我正在使用以下 jquery。

function clearForm()
{
    $(':input').not(':button, :submit, :reset, :hidden, :checkbox, :radio').val('');
    $(':checkbox, :radio').prop('checked', false);
}

以及以下用于清除按钮的struts2

            <s:submit key="button.clear" cssClass="submit" onclick="clearDirtyFlag(); clearForm(); return false"  tabindex="18"/>

现在它会在不离开页面的情况下清除输入字段,但我在页面上有一个由以下 struts2 代码生成的列表

                <s:iterator value="commentViewList" >
                <div class="row rowaltcolor">
                    <div>
                        <s:url var="commentLink" action="commentAction" method="getCommentDetails">
                            <s:param name="commentId"><s:property value="commentInfo.commentId"/></s:param>
                        </s:url>
                        <div class="col-sm-1 col-xs-12 text-left"><s:a href="%{commentLink}"  tabindex="18"><s:property value="commentTypeCode"/></s:a></div>
                        <div class="col-sm-2 col-xs-12 text-left"><s:property value="commentInfo.name"/></div>  
                        <div class="col-sm-2 col-xs-12 text-left"><s:property value="commentInfo.organization"/></div>  
                </div>
            </s:iterator> 

此列表不会被清除,因为它不是生成的 html 中的字段。当我查看源 html 时,列表值被硬编码在 html 中。我可以在客户端清除列表还是需要在服务器端执行此操作并重新显示页面?谢谢!

最佳答案

对于任何正在谷歌搜索的人,我认为我应该把为我解决问题的内容放在答案中。使用

function clearForm()
{
     $(':input').not(':button, :submit, :reset, :hidden, :checkbox, :radio').val('');
     $(':checkbox, :radio').prop('checked', false);
}

清除了所有输入字段(包括隐藏字段)而不执行操作。我还是用了<s:submit>标签,但我使用 return false 来阻止页面被提交,如下所示。

<s:submit key="button.clear" cssClass="submit" 
          onclick="clearForm(); clearDirtyFlag(); return false"  tabindex="18" />

对于我的页面,该页面不起作用,因为我需要清除页面上的 struts 生成的列表,因此我必须继续调用我的操作并再次渲染页面。所以我最终的提交代码是

<s:submit method="reset" key="button.clear" cssClass="submit" 
          onclick="clearForm(); clearDirtyFlag();"  tabindex="18" />

关于java - 我想避免清屏时出现文件太大错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33637738/

相关文章:

python - 在 Jupyter 中使用浏览按钮上传文件并使用/保存它们

grails - 如何使用Grails将文件存储在数据库中

json - 无法将Struts2结果类型设置为json

java - 如何去掉<?xml ...?>处理指令

java - 如何在插入包含对象集的对象列表期间忽略唯一违规

java - ParallelRefProcEnabled 默认线程数

grails - Grails 3(3.1.10)MultipartResolver

jsp - 将 session 变量从一只耳朵传递到另一只耳朵

java - 使用Struts2访问JSP中的Action类

java - HQL连接查询: could not resolve property: