0

Springの_metgodhidden属性を使用してマスカレードされたPUTを処理しようとしていますが、HiddenHttpMethodFilterが配置されていても、要求はPOSTとして送信されます。Glassfishで有効にするために他に何かしなければならないことはありますか?Web.xmlは以下のとおりです。

<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name>Jester</display-name>


<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        /WEB-INF/jester-persistence.xml
        /WEB-INF/jester-service.xml
    </param-value>
</context-param>

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


<servlet>
    <servlet-name>jester</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>jester</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>


<filter>
    <filter-name>filter1</filter-name>
    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>filter1</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

</web-app>
4

1 に答える 1

1

OKこれは、enctype = "multipart/form-data"の問題についてよく読んでいるためだと思いました。sf:formタグがマルチパートフォームに解決されるため、SpringはMultipartResolverでそれらを処理しようとします。これを回避するためのXMLは次のとおりです。

<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    <display-name>Jester</display-name>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/jester-persistence.xml
            /WEB-INF/jester-service.xml
        </param-value>
    </context-param>

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


    <servlet>
        <servlet-name>jester</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

        <!-- Needed for processing multipart forms ahead of the HiddenHttpMethodFilter -->
        <multipart-config>
            <location>/tmp</location>
            <max-file-size>20848820</max-file-size>
            <max-request-size>418018841</max-request-size>
            <file-size-threshold>1048576</file-size-threshold>
        </multipart-config>
    </servlet>

    <servlet-mapping>
        <servlet-name>jester</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <!-- Needed for processing multipart forms ahead of the HiddenHttpMethodFilter -->
    <filter>
        <filter-name>multipartFilter</filter-name>
        <filter-class>org.springframework.web.multipart.support.MultipartFilter</filter-class>
        <init-param>
            <param-name>multipartResolverBeanName</param-name>
            <param-value>filterMultipartResolver</param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>multipartFilter</filter-name>
        <servlet-name>jester</servlet-name>
    </filter-mapping>

    <!-- Convert Masqueraded PUT and DELETE requests -->
    <filter>
        <filter-name>hiddenHttpMethodFilter</filter-name>
        <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>hiddenHttpMethodFilter</filter-name>
        <servlet-name>jester</servlet-name>
    </filter-mapping>

</web-app>
于 2012-10-10T23:04:47.820 に答える