我通过任何类型的验证突然得到这个例外.
java.lang.NullPointerException
at com.opensymphony.xwork2.validator.AnnotationValidationConfigurationBuilder.processCustomValidatorAnnotation(AnnotationValidationConfigurationBuilder.java:393)
at com.opensymphony.xwork2.validator.AnnotationValidationConfigurationBuilder.processValidationAnnotation(AnnotationValidationConfigurationBuilder.java:233)
at com.opensymphony.xwork2.validator.AnnotationValidationConfigurationBuilder.processAnnotations(AnnotationValidationConfigurationBuilder.java:74)
at com.opensymphony.xwork2.validator.AnnotationValidationConfigurationBuilder.buildAnnotationClassValidatorConfigs(AnnotationValidationConfigurationBuilder.java:772)
at com.opensymphony.xwork2.validator.AnnotationActionValidatorManager.buildClassValidatorConfigs(AnnotationActionValidatorManager.java:254)
at com.opensymphony.xwork2.validator.AnnotationActionValidatorManager.buildValidatorConfigs(AnnotationActionValidatorManager.java:342)
at com.opensymphony.xwork2.validator.AnnotationActionValidatorManager.buildValidatorConfigs(AnnotationActionValidatorManager.java:321)
at com.opensymphony.xwork2.validator.AnnotationActionValidatorManager.getValidators(AnnotationActionValidatorManager.java:86)
at com.opensymphony.xwork2.validator.AnnotationActionValidatorManager.validate(AnnotationActionValidatorManager.java:125)
at com.opensymphony.xwork2.validator.AnnotationActionValidatorManager.validate(AnnotationActionValidatorManager.java:117)
at com.opensymphony.xwork2.validator.AnnotationActionValidatorManager.validate(AnnotationActionValidatorManager.java:112)
at com.opensymphony.xwork2.validator.ValidationInterceptor.doBeforeInvocation(ValidationInterceptor.java:222)
at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263)
at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:211)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:211)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:90)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) …Run Code Online (Sandbox Code Playgroud) 我想将外部策略生成器用于我班级中的一个关键属性.最简单的方法如下所示:http: //blog.eyallupu.com/2011/01/hibernatejpa-identity-generators.html 或 http://www.coderanch.com/t/219256/ORM/databases/HBM-Annotation -Foreign-Generator 或 http://www.mkyong.com/hibernate/hibernate-one-to-one-relationship-example-annotation/
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.*;
import org.hibernate.annotations.GenericGenerator;
...
...
...
@GenericGenerator(
name = "myForeignGenerator",
strategy = "foreign",
parameters = @Parameter(name = "property", value = "osoba"))
@Id
@GeneratedValue(generator = "myForeignGenerator")
@Column(name = "IdPracownik", unique = true, nullable = false)
public int getIdPracownik() {
return this.idPracownik;
}
Run Code Online (Sandbox Code Playgroud)
和Eclipse显示错误:
"类型不匹配:无法从参数转换为注释",下划线"@Parameter"注释.
这是为什么?
不知道我在这里做错了什么.我的目标是获取方法的注释(如果存在).
public class RunTest
{
public static void main(String[] args) throws Exception, NoSuchMethodException
{
MyAction action = new MyAction();
Method method = action.getClass().getDeclaredMethod("printSomething");
RequiredPermission permission = method.getAnnotation(RequiredPermission.class);
String value = permission.permissionName();
System.out.println("permission name: "+value);
}
}
Run Code Online (Sandbox Code Playgroud)
MyAction类
public class MyAction
{
@RequiredPermission(permissionName="SYSO", permissionValue = 0)
public void printSomething()
{
System.out.println("hi there");
}
public void printABC()
{
System.out.println("ABC...");
}
}
Run Code Online (Sandbox Code Playgroud)
和注释:
public @interface RequiredPermission
{
String permissionName();
int permissionValue();
}
Run Code Online (Sandbox Code Playgroud)
我希望在控制台上看到:
权限名称:SYSO
但相反,我得到:
com.annotation.RunTest.main(RunTest.java:14)中线程"main"java.lang.NullPointerException中的异常
在grails中,我们可以使用两种方式定义一个动作: -
def actionname()
{
}
Run Code Online (Sandbox Code Playgroud)
和
def actionname = {
}
Run Code Online (Sandbox Code Playgroud)
这两种风格有什么区别?当我试图在动作(第二种风格)上方插入弹簧安全注释时,它说"@Secured" not applicable to field.这是什么意思?是因为关闭?
如果是这样,这是如何实现的?如果没有,是否有任何计划在未来的Dart版本中支持这一点?我主要是指你自己创建的自定义注释.
在此文档链接https://www.dartlang.org/docs/spec/latest/dart-language-specification.html#h.d0rowtffuudf中,它说:"元数据与程序构造p的抽象语法树相关联紧接着元数据,假设p本身不是元数据或注释.元数据可以在运行时通过反射调用检索,前提是注释的程序结构p可以通过反射访问.
从M3版本开始,尚未实现对元数据的反射访问."
谢谢.
我有一张地图,我可以用代码添加pin(注释).我想在运行我的应用程序时,在我的应用程序中添加注释时自动选择此注释,当单击地图而不是注释我的注释取消选择.我可以处理选择并取消选择我的注释,但肯定必须单击注释,直到选择并单击地图(另一个地方而不是注释),直到我的注释取消选择.
我不想要这个.我想在运行我的应用时自动选择我的注释,只需要在地图上点击另一个地方,直到我的注释取消选择.
请指导我.这是我处理select/deselect注释的代码:
static NSString* const ANNOTATION_SELECTED_DESELECTED = @"mapAnnotationSelectedOrDeselected";
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
NSLog(@"2");
NSString *action = (__bridge NSString *)context;
if ([action isEqualToString:ANNOTATION_SELECTED_DESELECTED]) {
BOOL annotationSelected = [[change valueForKey:@"new"] boolValue];
if (annotationSelected) {
NSLog(@"Annotation was selected, do whatever required");
}else {
NSLog(@"Annotation was deselected, do what you must");
}
}
}
- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views {
if ([mapViews.annotations count] > 1) {
for (MKAnnotationView *anAnnotationView in views) {
[anAnnotationView addObserver:self forKeyPath:@"selected" options:NSKeyValueObservingOptionNew context:(__bridge void …Run Code Online (Sandbox Code Playgroud) 我有一个从哈希图中获取内容的方法,一个简化的示例(虽然没有多大意义,但目前已经足够好了)是:
private Map<String,String> map = new HashMap<String,String>();
public String get(String key) {
return map.get(key);
}
Run Code Online (Sandbox Code Playgroud)
当给定键的条目明显不存在时,此方法可以返回null。事实是,我想对此方法进行注释@NonNull(因为它用在了数不胜数的地方,而且我不喜欢Intellij向我发送有关生产NPE的检查警告,因此我不想关闭该检查,我也不想在每次调用此方法时都检查返回的值是否不同于null,这是因为我总是将此方法与始终在映射中的一堆键一起使用,因此由于程序逻辑,该方法是一定要返回一个@NonNull值。
我很想只用来注释它@NonNull,但谁知道有人可能用某处定义的键以外的名称来调用它,并实际上导致了NullPointerException。你会怎么做?一个断言听起来很诱人。还是您只是更改方法以引发RuntimException?还是AssertionError?
谢谢。
编辑:
这是实际的实现:
/**
* Typesafe heterogeneous container pattern - implementation
*/
public class HandlersMap {
private final Map<Class<? extends TableHandler>, TableHandler> handlers;
public HandlersMap() {
handlers = new HashMap<Class<? extends TableHandler>, TableHandler>();
putHandler(RolesTableHandler.class, new RolesTableHandler());
putHandler(UsersTableHandler.class, new UsersTableHandler());
putHandler(DevicesTableHandler.class, new DevicesTableHandler());
}
private <T extends TableHandler> void putHandler(@NonNull final Class<T> type, @NonNull final T instance) { …Run Code Online (Sandbox Code Playgroud) 我正在为java 7源代码编写java注释处理器.当然,我可以使用javax.annotation.processing.filer来帮助我自动生成项目目录下的文件.
例如:注释是@becare
public interface test {
@becare
int compare(int a, int b);
}
Run Code Online (Sandbox Code Playgroud)
我的注释处理器的工作是当它检测到给定的注释@becare时,它会为我生成文件.
我的问题是,如果我从前面的代码片段中删除注释,我可以让注释处理器知道并删除它刚刚创建的文件吗?
或者有任何解决方法可以帮助我实现这一目标吗?
提前致谢.
我正在使用Lombok生成访问器方法.我的lombok.config文件在module/src/main/java目录中.配置文件看起来像这样.
lombok.accessors.prefix += m
config.stopBubbling = true
Run Code Online (Sandbox Code Playgroud)
我的代码中有以下内容.
@Setter String mRoute;
这似乎生成了函数getMRoute()而不是getRoute().
我已经尝试更改lombok.config文件的位置,甚至安装了IntelliJ的Lombok插件.
我需要在运行时阅读所有装饰有特定注释(例如@HttpSecurity)的类(接口)。扫描后,我希望阅读和解析装饰有注释的类的字段(枚举字段)。例如。
@HttpSecurity
public interface MyHttpSecurityConfig {
public enum secure {
@Path(pathGroup = "/*", pathName = "")
@Authc
@Form(errorPage = "/error.html", loginPage = "/login.html", restoreOriginalRequest = "")
@Authz
@AllowedRoles(roles = { "roleA", "roleB" })
@AllowedGroups(groups = { "groupA" })
@AllowedRealms(realms = { "realmA" })
@Expressions(expressions = { "#{identity.isLoggedIn()}" })
Admin
}
}
Run Code Online (Sandbox Code Playgroud)
可能存在一个或多个用@HttpSecurity装饰的类/接口。我的第一个要求是获取所有此类,第二个要求是通过读取注释及其在枚举字段上修饰的值来构建HttpSecurityBuilder。第二个要求很好,可以使用反射消除。但是,我的问题是第一个要求。我想用JavaSE核心实现第一个要求,即不使用任何外部依赖项,例如google Reflections。如有必要,可以假定我们具有要在其中扫描类的程序包名称。这是我做过什么用CDI
annotations ×10
java ×4
cdi ×1
closures ×1
dart ×1
dart-mirrors ×1
foreign-keys ×1
grails ×1
hibernate ×1
ios ×1
lombok ×1
mapkit ×1
mkannotation ×1
notnull ×1
objective-c ×1
one-to-one ×1
reflection ×1
struts2 ×1
validation ×1