【问题标题】:Troubles submitting a jsp form提交jsp表单的麻烦
【发布时间】:2013-07-11 22:18:09
【问题描述】:

我在使用 JSP 表单时遇到问题,无法使其正常工作。你能解释一下为什么 作品:

<%@ page session="false"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ page isELIgnored="false"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<form:form modelAttribute="categoriesItem" method="post"
        action="facebook/categorize">
        <fieldset>
            <form:select path="categories['${liste}']">
                <option value="None" selected>None</option>
                <option value="Family">Family</option>
                <option value="Professionnal">Professionnal</option>
                <option value="Friend">Friend</option>
            </form:select>
            <input type="submit" />
        </fieldset>
    </form:form>

这不是吗?

<%@ page session="false"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ page isELIgnored="false"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<form:form modelAttribute="categoriesItem" method="post"
    action="<c:url value="/facebook/categorize" />">
    <fieldset>
        <form:select path="categories['${liste}']">
            <option value="None" selected>None</option>
            <option value="Family">Family</option>
            <option value="Professionnal">Professionnal</option>
            <option value="Friend">Friend</option>
        </form:select>
        <input type="submit" />
    </fieldset>
</form:form>

如您所见,唯一的区别在于 action 标签,但它不起作用,我收到此错误:

org.apache.jasper.JasperException: /WEB-INF/views/prehandleFacebook.jsp (line: 30, column: 24) Tag &lt;form:form non terminé
    org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:42)
    org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:443)
    org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:133)
    org.apache.jasper.compiler.Parser.parseOptionalBody(Parser.java:992)
    org.apache.jasper.compiler.Parser.parseCustomTag(Parser.java:1274)
    org.apache.jasper.compiler.Parser.parseElements(Parser.java:1452)
    org.apache.jasper.compiler.Parser.parse(Parser.java:138)
    org.apache.jasper.compiler.ParserController.doParse(ParserController.java:242)
    org.apache.jasper.compiler.ParserController.parse(ParserController.java:102)
    org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:198)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:373)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:353)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:340)
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:646)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238)
    org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:263)
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1208)
    org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:992)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:939)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:311)
    org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:116)
    org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
    org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
    org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:101)
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
    org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
    org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
    org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45)
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
    org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:150)
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
    org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:182)
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
    org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
    org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
    org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:173)
    org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
    org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
    org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77)
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

会不会是两种 EL 语言不兼容?

【问题讨论】:

  • 第 30 行是哪一行?
  • &lt;form:form modelAttribute="categoriesItem" method="post" action="&lt;c:url value="/facebook/categorize" /&gt;"&gt;
  • 我假设这个 jsp 包含在另一个中。你能展示一些吗?
  • 只有纯 HTML,我把它拿走了,以使其更具可读性。
  • 我会仔细检查是否有任何其他标签/元素未正确关闭或出现故障。

标签: java spring jsp


【解决方案1】:

这个

action="facebook/categorize">

告诉浏览器将facebook/categorize 相对于您当前所在的网址。如果您在www.myapp.com/myapp/facebook,当您提交时,浏览器会将请求发布到www.myapp.com/myapp/facebook/facebook/categorize(我认为这是错误的)。请注意,如果您的路径改为 /facebook/categorize(开始时额外的 /),则该路径将附加到主机,而不是上下文。

这个

action="<c:url value="/facebook/categorize" />">

呈现为完整路径(相对于您的上下文根)。如果您的主机+上下文是myapp.com/myapp,那么它将呈现为myapp.com/myapp/facebook/categorize

【讨论】:

    【解决方案2】:

    尝试更改第二个(我想您不能将&lt;c:out...&gt; 包含在&lt;form:form...&gt; 中)。
    在这种情况下,您将使用绝对路径。

    <c:url var="myurl" value="/facebook/categorize" />
    <form:form modelAttribute="categoriesItem" method="post"
        action="${myurl}">
    

    【讨论】:

    • 这就是我现在要做的。我的问题是:这种不兼容是否有原因?
    猜你喜欢
    • 1970-01-01
    • 2019-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-06
    • 2016-01-15
    • 2011-08-20
    • 2023-03-22
    相关资源
    最近更新 更多