小编zir*_*iri的帖子

如何处理拦截器绑定中的属性

我有一个注释:

@Inherited
@InterceptorBinding
@Retention(RUNTIME)
@Target({METHOD, TYPE})
public @interface Example {
}
Run Code Online (Sandbox Code Playgroud)

以及用于处理的拦截器类:

@Interceptor
@Example
public class ExampleInterceptor implements Serializable {
...
}
Run Code Online (Sandbox Code Playgroud)

我想添加一个参数文本:

public @interface Example {
    String text();
}
Run Code Online (Sandbox Code Playgroud)

但我不知道如何处理拦截器类中的参数.如何修改类的注释?

@Interceptor
@Example(text=???????)
public class ExampleInterceptor implements Serializable {
...
}
Run Code Online (Sandbox Code Playgroud)

如果我写@Example(text="my text"),则只在方法/类注释时调用拦截器@Example(text="my text").但是我希望在参数值上独立调用拦截器 - @Example(text="other text").

以及如何获取参数值?我是否必须使用反思或有更好的方法吗?

java interceptor java-ee-6

6
推荐指数
1
解决办法
6388
查看次数

泽西岛中泛型类型的编组

我需要返回几个结果和结果总数的客户列表。我必须在具有不同实体的几个地方执行此操作,因此我想要一个具有这两个属性的通用类:

@XmlRootElement
public class QueryResult<T> implements Serializable {
    private int count;
    private List<T> result;

    public QueryResult() {
    }

    public void setCount(int count) {
        this.count = count;
    }

    public void setResult(List<T> result) {
        this.result = result;
    }

    public int getCount() {
        return count;
    }

    public List<T> getResult() {
        return result;
    }
}
Run Code Online (Sandbox Code Playgroud)

和服务:

@GET
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public QueryResult<TestEntity> findAll(
    QueryResult<TestEntity> findAll = facade.findAllWithCount();
    return findAll;
}
Run Code Online (Sandbox Code Playgroud)

实体不重要:

@XmlRootElement
public class TestEntity implements Serializable {
    ...
}
Run Code Online (Sandbox Code Playgroud)

但这会导致: javax.xml.bind.JAXBException: class test.TestEntity nor …

java jaxb jersey

5
推荐指数
2
解决办法
6344
查看次数

JSF + Hibernate:Collection与任何会话无关

首先,我使用Java EE,Hibernate与EntityManager和PrimeFaces.

我有一个EJB模块(业务逻辑和域)和两个WAR模块(Jersey WS和JSF PrimeFaces).

我决定在JSF WAR模块中初始化延迟集合,以避免延迟初始化异常.我不使用扩展实体管理器.

@ManagedBean(name = "company")
@SessionScoped
public class CompanyBean {

    @EJB
    private CompanyFacade cf;

    ...

    public String showDetails(Long id) {
        company = cf.find(id);
        Hibernate.initialize(company.getCompanyTypes());
        Hibernate.initialize(company.getPrimaryUser());
        Hibernate.initialize(company.getBlocked());
        Hibernate.initialize(company.getAddresses());
        Hibernate.initialize(company.getContacts());
        return "DETAILS";
    }

    ...
}
Run Code Online (Sandbox Code Playgroud)

我得到:

Caused by: org.hibernate.HibernateException: collection is not associated with any session at org.hibernate.collection.AbstractPersistentCollection.forceInitialization(AbstractPersistentCollection.java:474) at org.hibernate.Hibernate.initialize(Hibernate.java:417) at minepackage.CompanyBean.showDetails(CompanyBean.java:79) ...

我不明白.在从数据库中提取初始化之前必须有一个会话,不是吗?我以类似的方式初始化WS模块中的属性,并且它正在工作.

知道发生了什么事吗?

java jsf hibernate java-ee primefaces

2
推荐指数
1
解决办法
4720
查看次数

标签 统计

java ×3

hibernate ×1

interceptor ×1

java-ee ×1

java-ee-6 ×1

jaxb ×1

jersey ×1

jsf ×1

primefaces ×1