gpt4 book ai didi

Spring roo,apache tiles 显示在 Controller 中设置的模型属性

转载 作者:行者123 更新时间:2023-12-04 16:45:54 24 4
gpt4 key购买 nike

我正在使用 Spring roo,在其中一个 Controller 中,我使用如下字符串设置模型属性“error”:

//uiModel.addAttribute("error", "Duplicate name for Vendor");

@RequestMapping(method = RequestMethod.POST)
public String create(@Valid Vendor vendor, BindingResult bindingResult, Model uiModel, HttpServletRequest httpServletRequest) {
if (bindingResult.hasErrors()) {
uiModel.addAttribute("vendor", vendor);
addDateTimeFormatPatterns(uiModel);
return "vendors/create";
}

try {
vendorService.saveVendor(vendor);
uiModel.asMap().clear();
} catch(Exception e) {
uiModel.addAttribute("vendor", vendor);
uiModel.addAttribute("error", "Duplicate name for Vendor");
addDateTimeFormatPatterns(uiModel);
return "vendors/create";
}
return "redirect:/vendors/" + encodeUrlPathSegment(vendor.getId().toString(), httpServletRequest);
}

现在我的问题是如何在创建页面中显示错误(如果不为空),目前如下所示。

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<div xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:field="urn:jsptagdir:/WEB-INF/tags/form/fields" xmlns:form="urn:jsptagdir:/WEB-INF/tags/form" xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:spring="http://www.springframework.org/tags" version="2.0">
<jsp:directive.page contentType="text/html;charset=UTF-8"/>
<jsp:output omit-xml-declaration="yes"/>
<form:create id="fc_domain_Vendor" modelAttribute="vendor" path="/vendors" render="${empty dependencies}" z="MGZPL+gO+CDX6M4iRO/z/qRfnJI=">
<field:input field="name" id="c_domain_Vendor_name" required="true" z="s+3hs8xXpSZ71RoD0ktXy0BnjS0="/>
<field:input field="email" id="c_domain_Vendor_email" validationMessageCode="field_invalid_email" z="+4rIdPGArWhHQlrFG/1N6yrKKno="/>
<field:input field="mobile" id="c_domain_Vendor_mobile" max="16" z="kgM5Z9jJ6xW9BxiPPB4Ipz0TUKg="/>
</form:create>
<form:dependency dependencies="${dependencies}" id="d_domain_Vendor" render="${not empty dependencies}" z="hLv7c7K8OOSRrBJKgKuw9H1+GvA="/>
</div>

提前致谢

最佳答案

Spring roo 使用 spring 标签 form:errors,它将打印与该字段关联的任何错误消息。

所以您需要做的就是生成错误消息,这是一种由 spring form:errors 标记获取的方式。

有很多方法可以进行验证,最简单的开始方法是在 Controller 本身中进行。

因此您的代码将更改为:

try {
vendorService.saveVendor(vendor);
uiModel.asMap().clear();
} catch(Exception e) {
uiModel.addAttribute("vendor", vendor);
bindingResult.rejectValue("name", "vendor.name.duplicate");
addDateTimeFormatPatterns(uiModel);
return "vendors/create";
}

注意:vendor.name.duplicate 是您必须在 WEB-INF/i18n/messages.properties 中定义的消息属性

关于Spring roo,apache tiles 显示在 Controller 中设置的模型属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15406841/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com