这个问题很接近,但仍然不是我想要的.我想以通用的方式断言两个bean对象是等价的.如果它们不是,我想要一个详细的错误消息来解释差异而不是布尔"等于"或"不等于".
我正在使用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访问这些属性?我可以使用某种解决方法吗?
我试图将一个服务注入我的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) 假设我有一个类型对象的句柄,我被配置告知它有一个int带有名称的bean属性age.如何检索此文档的getter?
有没有比预先"获取"和大写"a"更好的方法age,并通过反思寻找该名称的方法?
我需要帮助修复我在尝试将我的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) 我试图找到一个问题的最佳解决方案,我将映射一个简单的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类,因为它不会影响旧服务的使用者.
谢谢.
在我的应用程序中,我遇到一个问题,当类中的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) 我想在Scala中运行时创建一个类.现在,只考虑一个简单的例子,我想用相似的java bean来创建一些属性,我只在运行时知道这些属性.
如何创建scala类?我愿意从Scala的源文件创建,如果有编译它,并在运行时加载的方式,我可能要为我有时候有一些复杂的功能,我想添加到类.我该怎么做?
我担心我读到的scala解释器是沙盒化它加载的解释代码,以便托管解释器的一般应用程序无法使用它?如果是这种情况,那么我将无法使用动态加载的scala类.
无论如何,问题是,如何在运行时动态创建一个scala类并在我的应用程序中使用它,最好的情况是在运行时从scala源文件加载它,类似于interpreterSource("file.scala")它并加载到我当前的运行时,第二最好的情况是通过调用方法来创建. createClass(...)在运行时创建它.
谢谢,菲尔
在Tomcat FAQ上,它说:"Tomcat不是EJB服务器.Tomcat不是一个完整的J2EE服务器."
但如果我:
那我不是有效地拥有一个Java EE应用服务器吗?然后不是我的bean EJB?还是有其他一些定义特征?
什么是符合Java EE的应用服务器为您提供的,您不能轻易/轻松地从Tomcat获取某些第三方子系统?
嗨,我可以配置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,任何人都知道如何解决这个问题?
谢谢!
javabeans ×10
java ×9
java-ee ×2
assert ×1
ejb-3.0 ×1
enterprise ×1
equality ×1
gson ×1
hibernate ×1
interpreter ×1
java-6 ×1
java-8 ×1
java-ee-6 ×1
jaxb ×1
json ×1
reflection ×1
runtime ×1
scala ×1
spring ×1
spring-mvc ×1
tomcat ×1
unit-testing ×1