标签: javabeans

断言两个java bean是等价的

这个问题很接近,但仍然不是我想要的.我想以通用的方式断言两个bean对象是等价的.如果它们不是,我想要一个详细的错误消息来解释差异而不是布尔"等于"或"不等于".

java unit-testing assert equality javabeans

13
推荐指数
3
解决办法
2万
查看次数

Java Bean,BeanUtils和Boolean包装类

我正在使用BeanUtils来操作通过JAXB创建的Java对象,我遇到了一个有趣的问题.有时,JAXB会创建一个这样的Java对象:

public class Bean {
    protected Boolean happy;

    public Boolean isHappy() {
        return happy;
    }

    public void setHappy(Boolean happy) {
        this.happy = happy;
    }
}
Run Code Online (Sandbox Code Playgroud)

以下代码工作得很好:

Bean bean = new Bean();
BeanUtils.setProperty(bean, "happy", true);
Run Code Online (Sandbox Code Playgroud)

但是,试图获得这样的happy属性:

Bean bean = new Bean();
BeanUtils.getProperty(bean, "happy");
Run Code Online (Sandbox Code Playgroud)

此例外的结果:

Exception in thread "main" java.lang.NoSuchMethodException: Property 'happy' has no getter method in class 'class Bean'
Run Code Online (Sandbox Code Playgroud)

将所有内容更改为原语boolean允许set和get调用工作.但是,我没有这个选项,因为这些是生成的类.我假设发生这种情况是因为is<name>如果返回类型是基元boolean,而不是包装器类型,Java Bean库只考虑表示属性的方法Boolean.有没有人建议如何通过BeanUtils访问这些属性?我可以使用某种解决方法吗?

java jaxb javabeans apache-commons-beanutils

13
推荐指数
2
解决办法
7222
查看次数

"@inject"-ed属性保持为null

我试图将一个服务注入我的bean,但它始终是null.我收到以下错误:WELD-001000错误解析属性userBean对基础null.

一些代码片段:

的index.xhtml

<h:body>
    Hello from Facelets
    #{userBean.name}
</h:body>
Run Code Online (Sandbox Code Playgroud)

userbean.java

package beans;

import Domain.User;
import java.io.Serializable;
import javax.enterprise.context.SessionScoped;
import javax.inject.Inject;
import javax.inject.Named;
import service.UserService;

@Named
@SessionScoped
public class UserBean implements Serializable{
    @Inject UserService service;
    private User user;

    public UserBean(){
        this.user = service.find_user("foo");
    }

    public String getName(){
        return "bar";
    }
}
Run Code Online (Sandbox Code Playgroud)

UserService.java

package service;

import Domain.User;
import javax.ejb.Stateless;
import javax.inject.Named;

@Named
@Stateless
public class UserService {
    public UserService(){}

    public User find_user(String name){
        return new User();
    }
}
Run Code Online (Sandbox Code Playgroud)

java dependency-injection javabeans java-ee java-ee-6

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

通过反射获取bean属性getter或setter?

假设我有一个类型对象的句柄,我被配置告知它有一个int带有名称的bean属性age.如何检索此文档的getter?

有没有比预先"获取"和大写"a"更好的方法age,并通过反思寻找该名称的方法?

java reflection javabeans

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

org.springframework.beans.factory.NoSuchBeanDefinitionException:没有定义名为'customerService'的bean

我需要帮助修复我在尝试将我的Web应用程序部署到tomcat时遇到的错误.为什么不定义customerService bean?我在web.xml中遗漏了什么,或者我必须以某种方式映射customerService?我正在使用注释进行映射.任何帮助将非常感激.以下是localhost日志中的错误日志条目:

错误:

SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'customerController': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'customerService' is defined
    at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:306)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1106)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:384)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:283)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4600)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5097)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5092)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at …
Run Code Online (Sandbox Code Playgroud)

java spring hibernate spring-mvc javabeans

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

复杂Bean映射

我试图找到一个问题的最佳解决方案,我将映射一个简单的bean结构映射到基于浏览器的JavaScript应用程序.当前的要求是管理旧Java后端的大部分显示控制.目前我们有一个服务样式层,它生成的值对象没有内置的显示逻辑,如:

public class Example1 {
    String value1;
    Boolean value2;
    Example3 value3;

    public String getValue1(){...}
    public void setValue1(){...}
    ....
 }
Run Code Online (Sandbox Code Playgroud)

我的目标是能够在所有字段上映射通用结构,以便添加前端所需的新显示结构.我想只管理原始结构类(Example1类)结构,只需在包装器中将额外值设置为旧服务层.

通用结构将采用以下类的形式:

public class Presentable<T> {
    T value;
    boolean visible = true; 
    boolean mandatory = false;
    List<String> errors = new ArrayList<>();

    public T getValue() {...}
    public void setValue(T value) {...}
    ...
}
Run Code Online (Sandbox Code Playgroud)

最终结果类似于以下内容,其中value等于原始结构中的值:

public class Example2{
    Presentable<String> value1;
    Presentable<Boolean> value2;
    Presentable<Example3> value3;

    public Presentable<String> getValue1(){...}
    public void setValue1(){...}
    ...
}
Run Code Online (Sandbox Code Playgroud)

没有编写Example2样式类并复制每个值,是否有解决此问题的方法?我愿意修改Example1类,因为它不会影响旧服务的使用者.

谢谢.

java javabeans java-ee java-6

13
推荐指数
1
解决办法
1359
查看次数

Java 8接口默认方法似乎没有声明属性

在我的应用程序中,我遇到一个问题,当类中的getter仅在接口中默认(Java 8特性)时,结果没有Java Beans属性.即正常方法调用它只是作为一种标准方法,但对于通过"属性"访问它突然表现不同......

这是一个测试用例:

import java.beans.Introspector;
import java.util.Arrays;
import java.util.stream.Collectors;
import org.apache.commons.beanutils.PropertyUtils;

public class test
{
    public static void main (String[] arguments) throws Exception
    {
        // Normal language-level invocation, works fine.
        System.out.println (new Bean1 ().getFoo ());
        System.out.println (new Bean2 ().getFoo ());

        // Printing Java Beans properties; Bean2 doesn't have 'foo' property...
        System.out.println (Arrays.stream (Introspector.getBeanInfo (Bean1.class).getPropertyDescriptors ())
                            .map ((property) -> property.getName ())
                            .collect (Collectors.joining (", ")));
        System.out.println (Arrays.stream (Introspector.getBeanInfo (Bean2.class).getPropertyDescriptors ())
                            .map ((property) -> property.getName ())
                            .collect (Collectors.joining (", ")));

        // …
Run Code Online (Sandbox Code Playgroud)

java javabeans java-8 default-method

13
推荐指数
1
解决办法
1847
查看次数

在scala中动态创建类,我应该使用解释器吗?

我想在Scala中运行时创建一个类.现在,只考虑一个简单的例子,我想用相似的java bean来创建一些属性,我只在运行时知道这些属性.

如何创建scala类?我愿意从Scala的源文件创建,如果有编译它,并在运行时加载的方式,我可能要为我有时候有一些复杂的功能,我想添加到类.我该怎么做?

我担心我读到的scala解释器是沙盒化它加载的解释代码,以便托管解释器的一般应用程序无法使用它?如果是这种情况,那么我将无法使用动态加载的scala类.

无论如何,问题是,如何在运行时动态创建一个scala类并在我的应用程序中使用它,最好的情况是在运行时从scala源文件加载它,类似于interpreterSource("file.scala")它并加载到我当前的运行时,第二最好的情况是通过调用方法来创建. createClass(...)在运行时创建它.

谢谢,菲尔

interpreter scala runtime javabeans

12
推荐指数
1
解决办法
3614
查看次数

什么是Enterprise Java Bean?

在Tomcat FAQ上,它说:"Tomcat不是EJB服务器.Tomcat不是一个完整的J2EE服务器."

但如果我:

  • 使用Spring提供应用程序上下文
  • 用JPA注释注释我的实体(并使用Hibernate作为JPA提供者)
  • 将C3P0配置为连接池数据源
  • 用@Transactional注释我的服务方法(并使用Atomikos作为JTA提供者)
  • 使用JAXB进行编组和解组
  • 并可能添加我自己的JNDI功能

那我不是有效地拥有一个Java EE应用服务器吗?然后不是我的bean EJB?还是有其他一些定义特征?

什么是符合Java EE的应用服务器为您提供的,您不能轻易/轻松地从Tomcat获取某些第三方子系统?

java enterprise tomcat javabeans ejb-3.0

12
推荐指数
2
解决办法
5568
查看次数

Gson强制使用int而不是double

嗨,我可以配置gson,他使用int而不是double获取数据,如:

{fn: chat, data: {roomId: 1, text: "Some brabble"}}
Run Code Online (Sandbox Code Playgroud)

我有一个PacketClass将其反序列化为:

public class DataPacket {
  private String fn;
  private Object p; // will be a StringMap
}
Run Code Online (Sandbox Code Playgroud)

并解码如下:

DataPacket pkg = gson.fromJson(message, DataPacket.class);
Run Code Online (Sandbox Code Playgroud)

为了更好的类型处理,我得到了DataPacket.p字段的数据pojo,例如:

public class ChatPacket {
  public int roomId;
  public String message;
  public String from;
  // getter & setter
}
Run Code Online (Sandbox Code Playgroud)

将数据解析为数据包我使用BeanMaps(我删除了错误处理等):

public Object getData(Class<?> pojoClass) {
  pojo = pojoClass.newInstance();
  BeanMap b = new BeanMap();
  b.setBean(pojo);
  b.putAll(this.p);
  pojo = b.getBean();
}
Run Code Online (Sandbox Code Playgroud)

问题是现在gson使roomId:1变为StringMap中的双1.0并且beanmap尝试将其解析为整数并抛出NumberFormatException,任何人都知道如何解决这个问题?

谢谢!

java json javabeans gson

12
推荐指数
1
解决办法
9134
查看次数