Tag: javabeans

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 […]

在两个bean中生成字段差异的常用算法?

假设您有两个相同bean类型的实例,并且您希望显示两个实例之间已更改内容的摘要 – 例如,您在应用程序中有一个表示用户设置的bean,并且您希望能够显示用户正在提交的新设置(实例#1)中已更改内容的列表与已为用户存储的内容(实例#2)的列表。 对于诸如此类的任务,是否存在常用的算法或设计模式,可能是可以抽象并重用于不同类型的bean的东西? (我很难想到这类问题的好名字,知道谷歌会怎么做)。 我检查过commons-beanutils,没有任何东西突然出现在我面前。

Spring – 仅当值不为null时才设置属性

使用Spring时,只有在传递的值不为null时才可以设置属性吗? 例: 我正在寻找的行为是: some.Type myBean = new some.Type(); if (${some.param} != null) myBean.setAbc(${some.param}); 我需要这个的原因是因为abc有一个默认值,我不想用null覆盖它。 我正在创建的Bean不在我的源代码控制之下 – 所以我无法改变它的行为。 (另外,为此目的的abc可能是原始的,所以无论如何我都不能用null设置它。 编辑: 根据答案,我认为我的问题需要澄清。 我有bean我需要实例化并传递给我使用的第三方。 这个bean有很多属性(目前有12个),各种类型( int , boolean , String等) 每个属性都有一个默认值 – 我不知道它是什么,并且除非它成为一个问题,否则不需要知道。 我正在寻找的是一个来自Spring的能力的通用解决方案 – 目前我唯一的解决方案是基于reflection。 组态 … 码 public class TypeWrapper { private Type innerBean; public TypeWrapper() { this.innerBean = new Type(); } public void setProperties(Map properties) […]

如何一般地比较整个java bean?

我一直试图在org.apache.commons.beanutils库中找到一个方法/习惯用来评估2个实例之间所有属性的相等性,即bean的通用equals()方法。 有没有一种简单的方法可以使用这个库? 或者我是以错误的方式来做这件事的? 谢谢。

在类型java.lang.String上找不到属性’someproperty’

我收到此错误,我无法弄清楚问题可能在哪里。 “userid”列位于数据库中并位于bean中。 有人有什么主意吗? org.apache.jasper.JasperException: An exception occurred processing JSP page /user.jsp at line 24 21: 22: 23: User ID : <input type="text" readonly="readonly" name="userid" 24: value="” /> Username : <input 25: type="text" name="firstName" 26: value="” /> LastName : <input 27: type="text" name="lastName" root cause javax.el.PropertyNotFoundException: Property 'userid' not found on type java.lang.String 谢谢。

如何使用JPA持久化两个实体

我在我的webapp中使用JPA,我无法弄清楚如何持久保存两个彼此相关的新实体。 这是一个例子: 这是两个实体 + —————– + + ——————– + | 消费者| | ProfilePicture | + —————– + + ——————– + | id(PK)| — | consumerId(PPK + FK)| | userName | | url| + —————– + + ——————– + 消费者有一个id和一些其他值。 ProfilePicture使用Consumer的id作为它自己的主键和外键。 (因为如果没有消费者,ProfilePicture将不存在,并且不是每个消费者都有ProfilePicture) 我使用NetBeans生成实体类和会话bean(外观)。 简而言之,这就是它们的样子 Consumer.java @Entity @Table(name = “Consumer”) @NamedQueries({…}) public class Consumer implements Serializable { […]

将自定义数据源添加到Jaspersoft Studio

我试图通过传递自定义数据源来填充表。 我创建了一个简单的报告,上面有一个表格。 报告它自己从ms sql数据库获取数据。 我编写了一个类似于本例中的类的java类。 但我在桌上没有任何价值。 在该示例中没有scriptlet。 我检查过(String) this.getFieldValue(“KN_FormelGG”); 代码行。 它从字段中获取数据并可以在报告中显示。 所以我猜bean数据源没有填充。 我在afterGroupInit调用fill table方法。 如何在jasper中使用java中的数据集合? 我也尝试在数据集和查询对话框中添加java bean,但它也没有帮助我。 我应该将scriptlet添加到子报表/表吗? 我的问题的主要重点是在scriptlet中具有自定义数据源。 我解决了另一个问题 ,但我仍然没有得到答案。 我添加了$P{FieldDataSource}.getData()来检查数据,但它提供了null。 java class 1: package testProjektIman.scriptlets; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import net.sf.jasperreports.engine.JRDefaultScriptlet; import net.sf.jasperreports.engine.JRScriptletException; import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; public class FillTable extends JRDefaultScriptlet { @Override public void afterGroupInit(final String id) throws JRScriptletException […]

从jsf重定向?

我正在为我的大学项目使用jsp,jstl和jsf进行应用程序,据说,我对jsf也很新。 到目前为止,一切都很顺利。 但是,我似乎有一个问题,想知道如何从托管bean重定向到dinamyc参数的页面。 例如article.jsp?article_id=2 有人能告诉我它是如何完成的吗? 我一直想尝试使用像 FacesContext.getCurrentInstance().getExternalContext().dispatch(“faces/article.jsp2?article_id=” + articleId); 但得到错误: javax.servlet.ServletException: #{postComment.postClick}: javax.faces.FacesException: javax.servlet.ServletException: javax.faces.component.UIViewRoot cannot be cast to com.sun.faces.application.StateManagerImpl$TreeNode javax.faces.webapp.FacesServlet.service(FacesServlet.java:256) 我一直在努力使用 response.sendRedirect(“faces/article.jsp2?article_id=” + articleId); return; 但又一次出错了。 javax.servlet.ServletException: Cannot forward after response has been committed javax.faces.webapp.FacesServlet.service(FacesServlet.java:256) 有人可以告诉我在使用jsf时如何从托管java bean重定向? 贝娄是我的代码(可能是错误的,这就是为什么重定向不工作)。 HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest(); HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse(); String articleId = request.getSession().getAttribute(“article_id”).toString(); //String articleId […]

为什么PropertyDescriptor行为从Java 1.6变为1.7?

更新:Oracle已将此确认为错误。 简介:在JDK 1.7中工作的某些自定义BeanInfo和PropertyDescriptor在JDK 1.7中失败,有些只在垃圾收集运行并且清除了某些SoftReferences后才会失败。 编辑:这也将破坏Spring 3.1中的ExtendedBeanInfo ,如post底部所述。 编辑:如果您调用JavaBeans规范的第7.1或8.3节,请准确说明规范的这些部分需要什么。 这些部分中的语言不是必要的或规范性的。 这些部分中的语言是示例的语言,这些语言最多不像规范那样含糊不清。 此外, BeanInfo API特别允许人们更改默认行为,并且在下面的第二个示例中明确区分了它。 Java Beans规范查找具有void返回类型的默认setter方法,但它允许通过java.beans.PropertyDescriptor自定义getter和setter方法。 使用它的最简单方法是指定getter和setter的名称。 new PropertyDescriptor(“foo”, MyClass.class, “getFoo”, “setFoo”); 这在JDK 1.5和JDK 1.6中有效,以指定setter名称,即使其返回类型不是void,如下面的测试用例中所示: import java.beans.IntrospectionException; import java.beans.PropertyDescriptor; import org.testng.annotations.*; /** * Shows what has worked up until JDK 1.7. */ public class PropertyDescriptorTest { private int i; public int getI() { return i; } […]

在净豆的词包裹

Netbeans很棒,但没有办法在其中包装文本(或者希望我还没有找到它)。 有没有办法做到这一点,如果没有,是否有任何类似的良好的Java IDE与此function(希望也是免费的)。