【问题标题】:Change Prompt Error Message From Java Library从 Java 库更改提示错误消息
【发布时间】:2016-01-22 12:07:15
【问题描述】:

目前我正在使用 zkoss、java 和 maven。我的应用程序中的一项功能是上传文件。

当我通过上传一个非常大的文件对此功能进行一些测试时,我收到了一条提示错误消息,上面写着 “请求被拒绝,因为它的大小 (8356577) 超过了配置的最大值 (1024000)”

经过多次调试,我发现提示消息来自 org.apache.commons.fileupload.FileUploadBase,这是我的一个 maven 依赖项中的文件。

现在,我想将错误消息更改为其他内容。有没有关于如何做的解决方案?我更喜欢不重新编译库的方式。非常感谢。

-- 更新--

这是我的 web.xml。我做错什么了吗?再次感谢。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
  id="WebApp_ID" version="2.5">
  <display-name>Sistem Informasi Jabatan Fungsional</display-name>

  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
      classpath:spring-ctx.xml
    </param-value>
  </context-param>

  <context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>classpath:log4j.properties</param-value>
  </context-param>


  <session-config>
    <session-timeout>15</session-timeout> <!-- in minutes -->
  </session-config>


  <listener>
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
  </listener>


  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

  <!-- For using session scoped bean -->
  <listener>
    <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
  </listener>

  <listener>
    <listener-class>org.zkoss.zk.ui.http.HttpSessionListener</listener-class>
  </listener>

  <servlet>
    <servlet-name>uploader</servlet-name>
    <servlet-class>org.zkoss.zk.au.http.DHtmlUpdateServlet</servlet-class>
    <init-param>
      <param-name>extention0</param-name>
      <param-value>/upload=uploader.UploadUtil</param-value>
    </init-param>
  </servlet>

  <servlet>
    <servlet-name>zkLoader</servlet-name>
    <servlet-class>org.zkoss.zk.ui.http.DHtmlLayoutServlet</servlet-class>
    <!-- Must. Specifies URI of the update engine (DHtmlUpdateServlet). It must be the same as <url-pattern> 
      for the update engine. -->
    <init-param>
      <param-name>update-uri</param-name>
      <param-value>/zkau</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup><!-- MUST -->
  </servlet>
  <servlet>
    <servlet-name>auEngine</servlet-name>
    <servlet-class>org.zkoss.zk.au.http.DHtmlUpdateServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>zkLoader</servlet-name>
    <url-pattern>*.zul</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>zkLoader</servlet-name>
    <url-pattern>*.zhtml</url-pattern>
  </servlet-mapping>

  <servlet-mapping>
    <servlet-name>auEngine</servlet-name>
    <url-pattern>/zkau/*</url-pattern>
  </servlet-mapping>
  <!-- Spring Security Filter Start Here -->
  <filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  <!-- Spring Security Filter End Here -->

  <welcome-file-list>
    <welcome-file>index.zul</welcome-file>
  </welcome-file-list>
</web-app>

【问题讨论】:

    标签: java file-upload zk apache-commons-fileupload


    【解决方案1】:

    您可以从org.zkoss.zk.au.http.AuUploader 扩展并覆盖handleError(Throwable) 方法:

    public class MyUploader extends AuUploader {
        @Override
        protected String handleError(Throwable ex)
        {
            return "mymessage";
        }        
    }
    

    然后你必须在你的 web.xml 中配置这个扩展:

    在配置中

    <servlet>
        <servlet-class>org.zkoss.zk.au.http.DHtmlUpdateServlet</servlet-class>
        <!-- extentions here -->
    </servlet>
    

    添加:

    <init-param>            
        <param-name>processor0</param-name>             
        <param-value>/upload=uploader.MyUploader</param-value>
    </init-param>
    

    可能是 processor0 必须更改为 extention0,具体取决于您的 ZK 版本。 processor0 已通过 ZK 7 测试。

    关于这个问题的ZK文档可以找到here

    【讨论】:

    • 您好,感谢您的回复。首先, 中的“uploader”指的是什么?然后,我更新了我的问题并添加了我的 web.xml 配置。你能看看我是不是配置有问题?我已经尝试过您的解决方案,但仍然没有覆盖 handleError 方法。非常感谢:D
    • 您定义了 servlet DHtmlUpdateServlet 两次(并且您自己的未映射到特定 URL)。您必须将&lt;init-param&gt; 添加到名称为auEngine 的现有servlet。我在答案中添加了指向相应 ZK 规范的链接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-10
    • 1970-01-01
    • 2016-12-17
    • 1970-01-01
    • 2018-06-29
    • 2017-05-05
    相关资源
    最近更新 更多