对我有这样的场景:添加错误GET方法春季注解控制器
- 我显示资产的用户列表。
- 用户选择一项资产,然后单击添加项目
- 在我的请求映射中,在GET操作期间。我使用服务类来检查此资产是否确实存在于DB中
- 如果不是,则应通过消息通知用户。我用的形式:错误标签
我的问题是,当我在方法签名中添加了错误的对象,我得到这个错误:
Errors/BindingResult argument declared without preceding model attribute
代码:
@RequestMapping(value = "/addItemsToAsset.htm", method = RequestMethod.GET)
public String setupForm(@RequestParam("assetID") Long assetID,
Errors error, ModelMap model) {
AssetItemVo voAsset = null;
if (assetID != null && assetID != 0) {
//Get data for asset from DB using assetID
List<AssetDraftTempVo> lstDraft = service.getAssetDraftByLngID(assetID);
if (lstDraft.size() == 0) {
voAsset = new AssetItemVo();
// I wanted to add validation here. If no data for asset id is found, I would like to add an error to the error object
error.reject("123","Unable to find info for the asset in the database.");
} else {
AssetDraftTempVo voDraft = lstDraft.get(0);
voAsset = new AssetItemVo();
voAsset.setStrPlant(voDraft.getStrPlant());
.
. /*other DTO property here*/
.
}
}
model.put("assetItemDetail", voAsset);
return "additemstoasset";
}
我的目标在显示表单的过程中,我想立即填充错误对象(如果有错误)
这是我的表单,为了清晰起见。
<form:form modelAttribute="assetItemDetail" method="post">
<div id="error_paragraph">
<form:errors path="*" cssClass="errors" />
</div>
</form:form>
为了让过去的错误,我手动更改方法签名,并添加模型属性,但它仍然无法填充表单:错误标签
@RequestMapping(value = "/addItemsToAsset.htm", method = RequestMethod.GET)
public String setupForm(@RequestParam("assetID") Long assetID,
@ModelAttribute("assetItemDetail") AssetItemVo voAssetData, Errors error,
ModelMap model)