小编Boz*_*zho的帖子

如何用spring mvc 3.0注册处理程序拦截器?

应该很容易:

<bean id="handlerMapping"
   class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
    <property name="interceptors">
        <list>
            <ref bean="myInterceptor" />
        </list>
    </property>
</bean>
Run Code Online (Sandbox Code Playgroud)

但这样就不会调用拦截器.

java spring spring-mvc

18
推荐指数
4
解决办法
3万
查看次数

如何将int []数组转换为List?

我希望这段代码能够显示true:

int[] array = {1, 2};
System.out.println(Arrays.asList(array).contains(1));
Run Code Online (Sandbox Code Playgroud)

java arrays collections

18
推荐指数
3
解决办法
1万
查看次数

使用EntityManager从EJB访问Hibernate会话

是否可以从EntityManager获取Hibernate Session对象?我想访问一些特定于hibernate的API ...

我已经尝试过类似的东西:

org.hibernate.Session hSession =
   ( (EntityManagerImpl) em.getDelegate() ).getSession();
Run Code Online (Sandbox Code Playgroud)

但是只要我在EJB中调用一个方法,我就会得到"在EJB上调用期间发生系统异常",并带有NullPointerException

我使用glassfish 3.0.1

java hibernate jpa java-ee glassfish-3

18
推荐指数
4
解决办法
2万
查看次数

具有spring mvc的多个域

假设我有一个应用程序必须缩短URL,但也做其他事情.(喜欢google.comgoo.gl,或者facebook.comfb.me).

简单地部署两个应用程序很容易,但(现在)只需一个就可以了.使用弹簧和弹簧mvc.我有以下映射:

@RequestMapping(value="/{shortUrlKey}", headers="Host=foo.br")
...
@RequestMapping(value="/{username}")
Run Code Online (Sandbox Code Playgroud)

唉,headers注释不是提供更具体的信息,而是提供限制.所以,如果我有这两个,只有后者被调用,即使我打开它http://foo.br/asdf.如果只留下前者,它适用于来自的人foo.br,如果主人不同,则不会打开任何东西.

所以,问题:

  • 如何为相同的路径创建两个处理程序,但不同的URL /主机
  • 是否可以使用属性占位符配置器动态解析主机(而不是在注释中对其进行硬编码)

如果有一些可插拔的方法解决机制,也许两者都可以工作.有这样的吗?

java spring spring-mvc

18
推荐指数
1
解决办法
6258
查看次数

为什么新的String(bytes,enc).getBytes(enc)不返回原始字节数组?

我做了以下"模拟":

byte[] b = new byte[256];

for (int i = 0; i < 256; i ++) {
    b[i] = (byte) (i - 128);
}
byte[] transformed = new String(b, "cp1251").getBytes("cp1251");

for (int i = 0; i < b.length; i ++) {
    if (b[i] != transformed[i]) {
        System.out.println("Wrong : " + i);
    }
}
Run Code Online (Sandbox Code Playgroud)

对于cp1251这个输出只有一个错误的字节 - 在位置25.
对于KOI8-R- 所有罚款.
适用于cp1252- 4或5个差异.

这是什么原因以及如何克服这个原因?

我知道在任何编码中将字节数组表示为字符串是错误的,但这是支付提供商协议的要求,所以我没有选择权.

更新:ISO-8859-1作品中代表它,我将它用于byte[]部分和cp1251文本部分,所以问题仍然只是出于好奇

java

17
推荐指数
2
解决办法
4825
查看次数

带有超类参数的Java getMethod方法

鉴于:

class A
{
    public void m(List l) { ... }
}
Run Code Online (Sandbox Code Playgroud)

假设我想m用反射调用方法,将ArrayList作为参数传递给m:

List myList = new ArrayList();
A a = new A();
Method method = A.class.getMethod("m", new Class[] { myList.getClass() });
method.invoke(a, Object[] { myList });
Run Code Online (Sandbox Code Playgroud)

getMethod3行将抛出,NoSuchMethodException因为myList的运行时类型是ArrayList,而不是List.

有没有一个很好的通用方法,不需要知道A类的参数类型?

java reflection

17
推荐指数
1
解决办法
1万
查看次数

子目录(web)上下文无法访问<context:property-placeholder>属性

一个典型的用例:我有applicationContext.xmldispatcher-servlet.xml.在父上下文(applicationContext.xml)中,我有:

 <context:property-placeholder location="classpath:application.properties" />
Run Code Online (Sandbox Code Playgroud)

但是,Web上下文无法访问由它加载的属性 - 无论是在xml中还是在使用中@Value.(它们只是没有解析而且表达式(${varName})被设置为值而不是)

我通过添加<context:property-placeholder>to来处理它dispatcher-servlet.xml,但我想知道是否:

  1. 这是预期的行为
  2. 没有更好的方法将属性公开给子上下文.

spring spring-mvc

17
推荐指数
1
解决办法
4173
查看次数

克隆多维数组

int[][] array = new int[][] {...}
int[][] clone = array.clone();
Run Code Online (Sandbox Code Playgroud)

我天真地期待这个工作.但它没有 - 它只克隆了第一个维度,如果我想要一个真正的克隆,我必须手动克隆另一个维度.注意:内容已正确复制.但是,当我改变时clone[0][1],它反映在array[0][1]

虽然.clone()已知执行浅层克隆,但int[][]看起来像一个对象(如果我们不知道它的内部实现,至少)

为什么选择这种行为?是不是int[][]引用数组对象,而不仅仅是数组的第一个维度?在什么情况下只克隆第一个维度所需的行为?

java

17
推荐指数
1
解决办法
2679
查看次数

如何使用Spring MVC将会话属性作为方法参数(参数)传递

简而言之,我想要的是:

public String action(@SessionAttribute User user) {..}
Run Code Online (Sandbox Code Playgroud)

代替

public String action(HttpSession session) {
     User user = session.getAttribute("user");
}
Run Code Online (Sandbox Code Playgroud)

主要是为了:

  • 可读性
  • 单元测试

java spring spring-mvc

16
推荐指数
1
解决办法
1万
查看次数

HQL更新是否清除了二级缓存?

本机查询正在清除第二级缓存条目.来自7年前的hibernate论坛的回答说,HQL更新查询也清除了二级缓存.但这仍然是真的吗?

由于HQL查询具有要更新的确切字段,并且在哪个实体中,我认为不应该像session.save(..)调用常规一样难以表现.

java hibernate

16
推荐指数
2
解决办法
2702
查看次数