hybris interceptor 应用于对象保存前的数据验证

package com.aaa.backoffice.Interceptors;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;

import com.aaa.core.model.CAHOrderApprovedConfigModel;
import com.aaa.core.services.util.dao.CahCommonDao;

import de.hybris.platform.servicelayer.interceptor.InterceptorContext;
import de.hybris.platform.servicelayer.interceptor.InterceptorException;
import de.hybris.platform.servicelayer.interceptor.PrepareInterceptor;
import de.hybris.platform.servicelayer.model.ModelService;

public class OrderApprovedConfigSavingInterceptor implements PrepareInterceptor<OrderApprovedConfigModel> {

    private final static Logger LOG = LoggerFactory.getLogger(OrderApprovedConfigSavingInterceptor.class);

    @Autowired
    private ModelService modelService;

    @Autowired
    private CahCommonDao cahCommonDao;

    @Override
    public void onPrepare(OrderApprovedConfigModel config, InterceptorContext arg1) throws InterceptorException {
        // 内容check
        checkSavedValues(config);
        // 保存Code
        String code = config.getSalesOrg().getUid()+"-"+config.getOrderReason().getCode()+"-"+config.getOrderType();
        config.setCode(code);
    }

    private void checkSavedValues(OrderApprovedConfigModel config) throws InterceptorException {

        if (null == config.getSalesOrg()) {
            throw new InterceptorException("请选择xxx!");
        }
        if (null == config.getOrderReason()) {
            throw new InterceptorException("请选择xxx!");
        }
        if (null == config.getOrderType()) {
            throw new InterceptorException("请选择xxx!");
        }
        if (null == config.getRoles()) {
            throw new InterceptorException("请选择角色!");
        }

    }
}
时间: 2024-10-25 20:28:17

hybris interceptor 应用于对象保存前的数据验证的相关文章

OAF_OAF如何在保存前判断数据是否存在变更(案例)

2014-06-26 BaoXinjian 一.摘要 在OAF的开发中,可能有这样的需求,在选择保存按钮时,如果存在改动的数据,则提交事务,保存到数据库中: 如果不存在改动的数据,就提示用户当前没有数据可更改: 解决时需要判断页面中所使用的视图对象是否发生过改动,存在多种方法 1. 调用OADBTransaction.isDirty()方法 此方法用于判断当前事务中,视图对象是否发生过变更.但是此方法只对基于实体对象的视图对象有效,如果存在基于查询的视图对象,需要调用PL/SQL来改变数据库的就

Dynamic CRM 2013学习笔记(二十四)页面保存前进行逻辑验证

我们有时要验证下页面上的一些逻辑,比如开始时间不能晚于结束时间,不对时不让保存.我们可以在相关的字段事件上处理,但这如果要判断的字段比较多时,就比较麻烦了. 这时候我们就可以利用Form的OnSave事件,下面介绍下具体的做法: 1. Form的OnSave事件   2. JS方法 function formSave(context) { if (!dateCheck("new_valid_on", "new_valid_to")) { alert("Va

如果容器中包含了通过new操作创建的指针,切记在容器对象析构前将指针delete掉

如果容器中包含了通过new操作创建的指针,切记在容器对象析构前将指针delete掉 在STL中容器是智能的,可以在容器销毁时自动调用容器里对象的析构函数来销毁容器存储的对象. STL的容器虽然比较智能,但是没有智能到可以自动销毁new出来的指针对象. 所以在使用STL中的容器时,如果保存的是mew出来的对象的指针.如果在容器销毁之前没有把new出来的对象释放,会造成内存泄露. 解决方法版本一: 这种手工释放容器里new的对象不太可靠,菲异常安全的.如果在delete的时候爆出异常,那么还是会引起

如何把Excel中的单元格等对象保存成图片

对于Excel中的很多对象,比如单元格(Cell),图形(shape),图表(chart)等等,有时需要将它们保存成一张图片.就像截图一样. 最近做一个Excel相关的项目,项目中遇到一个很变态的需求, 需要对Excel中的一些对象进行拍图,比如,对一个单元格设置一些颜色之后拍图,或者对一个图表,报表拍成图片.经过比较曲折的经历,终于还是完成了.拿出来分享一下. 要做Excel,首先当然是查看Excel的com对象模型.地址在这里: http://msdn.microsoft.com/en-us

[MISS静IOS开发原创文摘]-AppDelegate存储全局变量和 NSUserDefaults standardUserDefaults 通过模型保存和读取数据,存储自定义的对象

由于app开发的需求,需要从api接口获得json格式数据并保存临时的 app的主题颜色 和 相关url 方案有很多种: 1, 通过AppDelegate保存为全局变量,再获取 2,使用NSUSerDefault 第一种 :通过AppDelegate方法: 定义全局变量 // // AppDelegate.h // // Created by MISSAJJ on 15/5/5. // Copyright (c) 2015年 MISSAJJ. All rights reserved. // #i

STL中list中push_back(对象)保存对象的内部实现

STL中list中push_back(对象)保存对象的内部实现 1. 在容器中,存放的是对象拷贝 #include<iostream> #include<list> using namespace std; class A{ int i; static int num; public: A():i(0){ cout<<"A()" <<endl; num ++;} A(int ii):i(ii){ cout<<"A(i

Redis缓存系统(一)Java-Jedis操作Redis,基本操作以及 实现对象保存

源代码下载: http://download.csdn.net/detail/jiangtao_st/7623113 1.Maven配置 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.5.0</version> </dependency> <dependency> <

将C++对象保存到共享内存上

将C++对象保存到共享内存上时,由于程序DWON掉或者其他原因停掉程序(不清除共享内存)重新拉起程序时,共享内存上C++对象的虚函数指针已经失效.为了使得不清除共享内存重启程序时C++对象仍然有效,需要恢复共享内存上C++对象的虚函数表,通过C++的placement new可以做到. 假设 void *pShmDataAddr是挂载后的共享内存地址,TData是存放的C++对象,共享内存上总共存放了MAX_OBJ_NUM个对象.具体做法如下. 当程序启动的时候执行操作: TData *pShm

04——确定对象使用前被初始化

内置类型手动初始化 类类型-构造函数(确保构造函数将对象的每个成员都初始化) 类构造函数初始化列表与函数体内赋值的区别: 效率更高 函数内的赋值语句执行时先执行成员的默认构造函数,再执行copy assignment 初始化列表直接执行一次 copy构造函数 含有const成员.reference成员时需使用初始化列表 基类的初始化 成员的初始化次序: 先基类,够派生类 class成员的初始化次序为其声明次序 04--确定对象使用前被初始化