我正在编写一个基于Spring 3
MVC的Web应用程序,并将JSP用于我的视图层。我正在努力尝试报告JSP中特定Model对象的BindingResult错误的特定区域。最好用适当的代码解释一下:
这是我的Spring Controller方法:
@RequestMapping(value = "/**", method = RequestMethod.GET)
public ModelAndView get(@ModelAttribute("xApiRequest") @Valid final XAPIRequest xApiRequest,
final BindingResult xapiBindingResult,
final HttpServletResponse response,
Model model) throws EntityNotFoundException {
String viewName = "/WEB-INF/views/get-single-entity.jsp";
/*
* Create a MAV passing in the original Model object which contains:
* 1: The 'xApiRequest' @ModelAttribute object.
* 2: The BindingResult for the 'xApiRequest' object.
*/
final ModelAndView mav = new ModelAndView(viewName, model.asMap());
final XAPIResponse<Resource> xApiResponse = buildXAPIResponse(false, 200, xApiRequest, null);
response.setStatus(200);
mav.addObject("xApiResponse", xApiResponse);
return mav;
}
当我执行此方法时,可以看到以下内容:
而且我可以确认BindingResult的内容确实可以正确识别 xApiRequest 对象为验证错误的来源:
{xApiRequest=com.stretchr.xapi.entity.request.XAPIRequest@1e28608, org.springframework.validation.BindingResult.xApiRequest=org.springframework.validation.BeanPropertyBindingResult: 2 errors
Field error in object 'xApiRequest' on field 'userId': rejected value [null]; codes [NotEmpty.xApiRequest.userId,NotEmpty.userId,NotEmpty.java.lang.String,NotEmpty]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [xApiRequest.userId,userId]; arguments []; default message [userId]]; default message [may not be empty]
Field error in object 'xApiRequest' on field 'projectId': rejected value [null]; codes [NotEmpty.xApiRequest.projectId,NotEmpty.projectId,NotEmpty.java.lang.String,NotEmpty]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [xApiRequest.projectId,projectId]; arguments []; default message [projectId]]; default message [may not be empty]}
JSP看起来像这样:
<%@ page contentType="application/json; charset=UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib prefix="json" uri="http://www.atg.com/taglibs/json" %>
<%@ page session="false" %>
<spring:hasBindErrors name="xApiRequest">
</spring:hasBindErrors>
<c:if test="${errors}">
<json:object name="exceptions">
<json:property name="exceptionCount" value="${errors.errorCount}" />
<json:property name="globalExceptionCount" value="${errors.globalErrorCount}" />
<c:forEach var="error" items="${errors.allErrors}" varStatus="index">
<json:property name="${index}" value="${error.defaultMessage}" />
</c:forEach>
</json:object>
</c:if>
不管我做什么,我似乎似乎都无法识别 xApiRequest 模型对象具有绑定错误,因此JSP输出不包含包含错误详细信息的 exceptions
对象:
{
w: false
s: 200
c: ""
r: {
o ~path: ""
}
}
有人可以在这里看到我在做什么错吗?失败了,有什么办法可以调试JSP处理期间发生的事情?我很想调试Spring
taglib,但不确定如何在taglib和相关的代码段之间建立链接。
希望我在这里提供了足够的信息,但是如果需要更多信息,请不要犹豫。
非常感谢
在尝试调试 BindErrorsTag 类之后, 令人 尴尬的是,我意识到它根本没有被调用。这一发现使我意识到,我没有在JSP中包括Spring
taglib名称空间声明,包括它解决了这个问题。
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
诅咒自己错过了这个非常明显的错误,并且对为什么JSP(和我的IDE)没有抱怨缺少的taglib声明感到困惑。我以为缺少标签库声明通常会在执行标签时导致RuntimeException,但事实并非如此(我希望这样会为我节省很多调试时间!)
无论如何,问题解决了。
@axtavt-感谢您的帮助!
我使用ACR 1255U-J1作为通过蓝牙连接的外部阅读器。我用来访问阅读器的库是acsbt-1.0.0preview 7。我使用以下命令对MIFARE经典标签的扇区1(块4)进行身份验证: 当我对空的 MIFARE 经典标签进行身份验证(使用制造商默认配置)时,我收到响应状态字 。这表示身份验证成功。 但是,当我尝试对已格式化为NDEF标记的MIFARE Classic标记进行身份验证时,返回的
问题内容: 我最近升级到OkHttp3,并注意到您不能再直接从客户端取消按标签呼叫。现在必须由应用程序处理。 在CHANGELOG中表示: 现在,取消批量呼叫是应用程序的责任。 删除了通过标签取消调用的API,并已将其替换为更通用的机制。调度程序现在通过其runningCalls()和queueedCalls()方法公开所有正在进行的调用。您可以编写代码,以按标签,主机或其他方式选择调用,然后在不
我正在努力让Jasper在图表的条形图上显示值标签。我想生成什么: 我使用Jaspersoft Studio,并在“图表绘图”选项卡中选中了“显示标签”框。出于测试目的,我使用了某种红色和紫色作为项目标签的字体颜色和背景颜色,这在条形图上应该很明显。 我的jrxml文件如下所示: 我还尝试使用定制器,基于一些SO问题: 我没法让它工作,我有上面的条形图,但没有110/760标签。 为了显示这些值,
我想获取我在 Web 表单中使用的多个标签的值。我使用隐藏的输入字段来完成这项工作,但我无法通过servlet打印标签的值,因为我得到空作为标签的值 下面是我用来测试的示例代码 索引.jsp 这是提交。服务程序 } 我想显示孩子的年龄,但输出为空 请帮助提供可能的解决方案 提前致谢
本文向大家介绍Scrapy的remove_tags_with_content方法无法删除img标签?,包括了Scrapy的remove_tags_with_content方法无法删除img标签?的使用技巧和注意事项,需要的朋友参考一下 Scrapy爬取的数据有时候会做清理,把不需要用的标签都清除掉。 其中remove_tags和remove_tags_with_content是比较有用的内置方法。
问题内容: 在遍历Java优秀文章的地方,我发现这样的代码可以完美地编译。 描述说该单词将被视为标签和注释 我没有得到Java Label在循环外有用吗?在什么情况下应该使用Java Label外循环? 问题答案: 这是在Java中使用标签的好处之一: 嵌套循环的另一种用法: 要么:
问题内容: 我在AppEngine上运行JSF 2.0时遇到问题。我有如下,如果我部署它,打开网页,没有什么,但 标题 和页面的源代码是完全因为它是写相同-从没有改变到任何责任。 更改后的Stacktrace 问题答案: 如果Faces Servlet不处理请求并且请求不是专门针对GAE的,则通常会发生这种情况。 您用来访问页面的URL是什么?由于您声明了前缀映射,因此必须在URL中插入/ fac
部署到本地JBOSS服务器时会发生此错误。是否有解决此警告的方法? 22:31:22992警告[org.jboss.as.server.deployment](MSC服务线程1-13)JBAS015852:无法索引类com/company/core/security/AuthRealm。类位于/C:/DevTools/jboss-eap-6.3/bin/content/platform-ws-0.