我有一个简单的MVC控制器,我用我的自定义注释对它进行了注释:
@PreAuthorize("hasRole('GESTION_BENEFICIAIRE')")
@AuthentificationForte(otp = "#{args[0]}",transactionId="#{args[1]}")
@RequestMapping(value = "/ajouter", method = { RequestMethod.POST, RequestMethod.GET })
public String addBeneficiaire(@ModelAttribute("beneficiaireForm") BeneficiaireForm beneficiaireForm,
BindingResult result, Model model, Principal principal) {
[...]
}
我的自定义注释与一个方面链接,当验证不成功时,该方面会抛出RuntimeException
。
@Around(value = "@annotation(annotation)")
public Object verifyOtp(final ProceedingJoinPoint jointPoint,
final AuthentificationForte annotation) throws Throwable {
try {
if (authentificationForteEnabled) {
[...]
} else {
throw new AuthentificationForteException();
}
} else {
return jointPoint.proceed();
}
} finally {
}
}
所以现在的行为是,当验证失败时,我被重定向到500错误页面。我的目标是留在同一个页面并将拒绝的消息添加到BindingResult
:
result.rejectValue("suiteRib", "BeneficiaireForm.InvalidRib");
我还没有找到这样做的方法,我找到的唯一方法是更改所有逻辑,不使用注释,同时在控制器代码中使用带有try/catch的验证服务。
当方面抛出这个异常时,有什么方法可以处理这个问题,访问绑定结果并添加错误消息呢?
现在回答你的问题可能为时已晚,但有两种方法可以解决:
我们目前有一个应用程序,其中我们使用这种方法的混合来处理异常。
非常肯定。
这里有一个操作参数的示例:Aspectj覆盖方法的参数
您还可以将服务自动连接到方面类中(记住将其标记为@Configurable)。
如果您事先知道这些参数,那么我认为它们可以包含在点切割定义中,在这种情况下,可以在around方法中直接引用它们。这是更好的,因为参数是强类型的。
您可以在此处阅读更多内容:http://docs.spring.io/spring/docs/current/spring-framework-reference/html/aop.html
我正在创建一个后spring web服务endpoint,并使用一个Object,其中包含大约7-8个String变量和其他变量。在验证请求时,我需要对每个条件进行相同的测试,例如- < li >条件1如果为真,则继续,否则抛出异常。 < li >条件2如果为真,则继续,否则抛出异常。 < li >条件3如果为真,则继续,否则抛出异常 3-4更多业务逻辑验证就像上面一样,有很多if-else,一种
使用 Vim 编辑 Shell 脚本,在进行调试时,需要进行多行的注释,每次都要先切换到输入模式,在行首输入注释符"#"再退回命令模式,非常麻烦。 连续行的注释其实可以用替换命令来完成。换句话说,在指定范围行加"#"注释,可以使用 ":起始行,终止行 s/^/#/g",例如: :1,10s/^/#/g 表示在第 1~10 行行首加"#"注释。"^"意为行首;"g"表示执行替换时不询问确认。如果希望
问题内容: 我正在尝试创建将影响序列化值的自定义杰克逊注释。 含义: 现在序列化对象X(10)将导致: 我该如何实现? 问题答案: 结果:
问题内容: 根据这个答案:http://codingdict.com/questions/137507 我写了这样的序列化器: 如果注释存在且字段为,则女巫应该写字符串“ N / A” 。但是仅对非空字段调用方法。 另外,我尝试致电: 通过这样的实现: 但是没有结果。 如何以这种方式处理空字段? 更新资料 根据讨论:https : //github.com/FasterXML/jackson- d
在META-INF/Services中,添加了javax.annotation.processing.processor条目,指定自定义注释处理器类。
前面我们学习了 Java 的基本注解和元注解,如果这两种注解不能满足你的需求,可以自定义注解。下面介绍如何自定义注解。 声明自定义注解使用 @interface 关键字(interface 关键字前加 @ 符号)实现。定义注解与定义接口非常像,如下代码可定义一个简单形式的注解类型。 上述代码声明了一个 Test 注解。默认情况下,注解可以在程序的任何地方使用,通常用于修饰类、接口、方法和变量等。