2015-07-20 26 views
0

不久前,它决定我们的'支持'工具需要一些改革。这包括设计和技术上的。其中一件事是做出几项选择,这些选择都出现在工具中的任何表单上,会话范围内。<Spring MVC>第二种形式在同一页上导致很多错误

为此,我们决定用第二种形式扩展菜单栏。现在的表格造成了很多麻烦。即:

  • 有些不加载在所有的,而是给一个网:: ERR_INCOMPLETE_CHUNKED_ENCODING错误。

  • 如果一个网页的作品,我提交表单,出现以下错误:无论BindingResult也不是为bean名称“命令”可以作为请求属性

每当我调试平原目标对象控制器类,它遍历代码并识别绑定字段,并将它们分配给链接的命令类。无论何时我提交原始表单(不是菜单栏中的表单),都不会发生错误。

这是我的形式(如目前的情况是,以测试和所有):

<form:form method="post" action="userbar"> 
    <form:errors path="*" cssClass="error"/> 
    <span id="headerImageLeft"><img src="<c:url value="/static/images/temp_tc_logo.png"/>" alt="Ticketcounter"/></span> 
    <li id="menuItemProfile"><a href="<c:url value='profile'/>"><spring:message code="button.profile" /></a></li> 
    <li id="menuItemChangeList"><a href="<c:url value='changeList'/>"><spring:message code="button.change-list" /></a></li></a> 
    <li id="menuItemLogOff"><a href="<c:url value='logout'/>"><spring:message code="button.logout" /></a></li></a> 
    <li id="menuItemUsername"> 
     <spring:message code="label.user"/>: 
     <c:out value="${user.username}"/> 
    </li> 
    <c:if test="${not empty clientsList || not empty casesList}"> 
     <li id="menuItemClientBrowser"> 
      Show Archive <form:checkbox path="showArchive" id="showArchive" value="showArchive" onchange="submit();"/> 
     </li> 
    </c:if> 
</form:form> 

网:: ERR_INCOMPLETE_CHUNKED_ENCODING部分引起的。每当我删除它,每个页面正常加载。即使尝试:

<spring:bind path="showArchive"> 
    <input type="checkbox".../> 
</spring:bind> 

给出了错误。而在其他.jsp文件中,这些标签可以正常工作。

这些页面是使用一个模板构建的,该模板挑选menubar.jsp和相应的page-.jsp文件并将它们缝合在一起。这样菜单在整个工具中完全一样。

我希望有人可以帮助我解决这个问题,如果我对某些事情有些模糊,或者如果您想了解更多,请问,我会回答。

+0

对于初学者来说,你的动作是相对的而不是绝对的,我非常怀疑以前的页面有一个匹配的“用户栏”子网址。同样,多个表单不会像这样工作,因为您必须明确指定要绑定的表单对象,默认是'command'。我强烈建议使用专用的唯一名称进行搜索,否则它根本无法工作。 –

+0

@ M.Deinum感谢您的回复。这些表单都绑定到一个单独的bean,对于** userbar **它是*** userbar *** bean,对于主体来说,它们形成了相应的bean。除了登录屏幕之外,用户栏是全方位的,因为它在那里没有任何用处。 以前探讨的方法是简单地使用URL参数,但由于安全问题,它被丢弃。即使使用HTML5 History API,并不是所有的客户都使用HTML5支持浏览器,并且“迫使”他们升级,所以我们不必担心这是不好的商业行为。 – Zubaja

+0

请阅读我的评论...如果你张贴到一个相关的URL你的豆是无用的,你必须发布到确切的控制器的URL,否则它将无法正常工作。因此,你应该使用绝对的而不是相对的URL。你还必须给它一个独特的名字,因为如果你有多个表单,你的其他对象将不会再出现或被另一个名字覆盖。 –

回答

0

管理修复它。关于ModelAndView错误似乎是一个问题,我的控制器正在返回onSubmit()函数。

我改变了它,所以不是返回一个ModelAndView和一个URL 模型,它只是返回一个RedirectView。没有更多的错误,除了当我将HTML表单元素更改为Spring表单元素时。

相关问题