标签: javabeans

JSF Managed Bean自动创建?

是否可以自动创建JSF托管bean?

例如,我有几个会话范围的bean.有时需要在代码中访问这些实例(而不仅仅是在JSF中),这可以通过以下方式完成:

PageBean pageBean = (PageBean) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("pages");
Run Code Online (Sandbox Code Playgroud)

但是,如果没有访问过调用'#{pages}'的页面,那么这会解析为null ...无论如何都要让JSF在范围'开始'时创建一个bean?那么在这种情况下理想情况下,当用户会话开始时,'pages'会立即在会话中实例化bean吗?

java jsf managed javabeans

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

@PreDestroy从未调用@ViewScoped

我有一个@ViewScopedbean,它有一个带@PreDestroy注释的方法,可以确保关闭一些远程连接.但是,当用户导航时不调用该方法.

有什么可以做错的吗?我是否必须在任何地方注册任何内容才能使其正常工作?

这是一个简单的公共方法(void),不会抛出任何异常.

我正在使用带有Tomcat 7.0.12的JSF 2(MyFaces).这可能是Tomcat的问题吗?

UPDATE

@PostConstruct注释工作正常.

jsf annotations javabeans jsf-2

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

使用有状态会话Bean来跟踪用户的会话

这是我的第一个问题,我希望我做得对.

我需要处理一个Java EE项目,因此,在开始之前,我正在尝试做一些简单的事情,看看我能做到这一点.

我被Stateful Session Beans困住了.

这是一个问题:如何使用SFSB跟踪用户的会话?我看到的所有情况,"把"的最终SFSBHttpSession的属性.但我不明白为什么!我的意思是,如果bean是STATEFUL,为什么我必须使用HttpSession来保存它?

EJB容器的任务不是将正确的SFSB返回给客户端吗?

我试过一个简单的计数器豆.在不使用会话的情况下,两个不同的浏览器具有相同的计数器bean(单击"增量"会更改它们的值).使用会话,我有两个不同的值,每个值对应每个浏览器(点击Firefox上的"增量",只添加一个到Firefox的bean).

但我的老师告诉SFSB保持"与客户的会话状态",那么为什么它不能在不使用HttpSession的情况下工作呢?

如果我理解正确的,不使用HttpSession中SFSB同样用做它的SLSB呢?

我希望我的问题很明确,而且我的英语不是那么差!

编辑:我正在使用登录系统.一切顺利,完成登录后,我会看到一个显示用户数据的个人资料页面.但重新加载页面会使我的数据消失!我尝试在记录时添加HttpSession,但这样做会使数据在注销后保持不变!

session ejb stateful javabeans httpsession

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

Python中的JavaBean等价物

我使用Python作为OOP相当新.我来自Java背景.你会如何在python中编写一个javabean等价物?基本上,我需要一个类:

  1. 实现可序列化.
  2. 有吸气剂和二传手 - >私人财产
  3. 虚拟构造函数

有什么投入?我正在寻找示例代码!

python java javabeans

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

无法自动装配.找不到SimpMessagingTemplate类型的bean

我基本上按照文档中提供的指南在Spring中配置Websockets.

我正在尝试从服务器向客户端发送消息,如 " 从任何地方发送消息 " 一节中所述

在示例之后,您可以自动装配名为SimpMessagingTemplate的类

@Controller
public class GreetingController {

    private SimpMessagingTemplate template;

    @Autowired
    public GreetingController(SimpMessagingTemplate template) {
        this.template = template;
    }

    @RequestMapping(value="/greetings", method=POST)
    public void greet(String greeting) {
        String text = "[" + getTimestamp() + "]:" + greeting;
        this.template.convertAndSend("/topic/greetings", text);
    }

}
Run Code Online (Sandbox Code Playgroud)

但是,我当前的项目找不到bean"SimpMessagingTemplate".(Intellij:'无法自动装配.没有找到SimpMessagingTemplate类型的bean'.

我在互联网上查了几个例子,但是我找不到如何让Spring创建一个SimpMessagingTemplate实例.我怎样才能自动装配它?

编辑:

我决定发送更多背景信息.这是我目前的websocket配置:

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:websocket="http://www.springframework.org/schema/websocket"
       xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/websocket
        http://www.springframework.org/schema/websocket/spring-websocket-4.0.xsd">

        <!-- TODO properties to be read from a properties file -->
        <websocket:message-broker application-destination-prefix="/app">
            <websocket:stomp-endpoint path="/new_session" >
                <websocket:sockjs/>
            </websocket:stomp-endpoint>
            <websocket:simple-broker prefix="/topic"/>
        </websocket:message-broker> …
Run Code Online (Sandbox Code Playgroud)

java stomp javabeans autowired spring-messaging

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

跟踪JPA中已更改的属性

目前,我正在开发一个Java EE项目,其中包含有关持久性管理的一些非常重要的要求.用户对实体的更改首先需要在验证之前应用于某个工作副本,然后将它们应用于"实时数据".对实时数据的任何更改也需要有一些记录,以允许审计.

实体通过JPA进行管理,Hibernate将用作提供者.这是一个给定的,所以我们不回避Hibernate特定的东西.对于第一个要求,使用两个持久性单元.一个将实体映射到"实时数据"表,另一个映射到"工作副本"表.对于第二个要求,我们将使用Hibernate Envers,非常适合我们的用例.

到现在为止还挺好.现在,当用户在(基于Web的)前端查看数据时,能够指示工作副本中的哪些字段与实时数据相比更为有用.不同的颜色就足够了.为此,我们需要一些方法来了解哪些属性被改变了.我的问题是,有什么好办法可以解决这个问题?

使用JavaBeans API,PropertyChangeListener可以足以通知工作副本的实体中的任何更改并保留其中的一组.但是该集合也需要持久化,因为应用程序可以重新启动,并且在它们被验证并应用于实时数据之前,更改可以是长期的.并且在每次需要时应用实时数据的变化以获得工作副本是不可行的(因此两个持久性单元).我们还可以将工作副本与实时数据进行比较,并查找不同的字段.一些内省和反射代码就足够了,但这似乎相当于处理密集型,更不用说需要获取实时数据了.也许我错过了一些简单的东西,或者有人知道我可以使用的一个很棒的JPA/Hibernate功能.即使我无法避免制作(a)用于存储此类信息的单独数据库表,直到将其应用于实时数据,但这种方案的一些最佳实践或实际经验可能非常有用.

我意识到这是一个半开放的问题,但肯定其他人一定遇到过这样的要求.任何好的建议都值得赞赏,任何指向现成解决方案的指针都是接受答案的好候选人.

audit jpa properties javabeans java-ee

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

BeanUtils.copyProperties将Integer null转换为0

我注意到BeanUtils.copyProperties(dest,src)有一个奇怪的副作用.全空Integers(也许Long,Date等过)转换为0两个对象:源(原文如此)和目的地.版本:commons-beanutils-1.7.0

的Javadoc:

对于属性名称相同的所有情况,将属性值从原始bean复制到目标bean.

例如:

class User {
   Integer age = null;
   // getters & setters
}
...
User userDest = new User();
User userSrc = new User();
BeanUtils.copyProperties(userDest, userSrc);
System.out.println(userDest.getAge()); // 0
System.out.println(userSrc.getAge()); // 0
Run Code Online (Sandbox Code Playgroud)

实际修改源对象可能非常麻烦.使用null值制作对象的"真实"副本的最佳解决方案是什么.

java reflection spring javabeans

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

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

更新:Oracle已将此确认为错误.

简介:某些在JDK 1.6中工作的自定义BeanInfos和PropertyDescriptors在JDK 1.7中失败,有些只在垃圾收集运行并且清除了某些SoftReferences后才会失败.

编辑:这也将打破ExtendedBeanInfo在春季3.1,如帖子底部所述.

编辑:如果您调用JavaBeans规范的第7.1或8.3节,请准确说明规范的这些部分需要什么.在这些部分中,语言不是必要的或规范性的.这些部分中的语言是示例中的语言,这些示例最好不明确作为规范.此外,BeanInfoAPI特别允许人们更改默认行为,并在下面的第二个示例中明确区分.

Java Beans规范查找具有void返回类型的默认setter方法,但它允许通过a定制getter和setter方法java.beans.PropertyDescriptor.使用它的最简单方法是指定getter和setter的名称.

new PropertyDescriptor("foo", MyClass.class, "getFoo", "setFoo");
Run Code Online (Sandbox Code Playgroud)

这在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; }
    // A setter that my people call "fluent".
    public PropertyDescriptorTest setI(final int i) { this.i = i; return this; }

    @Test …
Run Code Online (Sandbox Code Playgroud)

java spring javabeans java-7

15
推荐指数
1
解决办法
7086
查看次数

以编程方式检索Bean

@Configuration
public class MyConfig {
    @Bean(name = "myObj")
    public MyObj getMyObj() {
        return new MyObj();
    }
}
Run Code Online (Sandbox Code Playgroud)

我有@Configuration Spring注释的MyConfig对象.我的问题是我如何以编程方式(在常规类中)检索bean?

例如,代码段看起来像这样.提前致谢.

public class Foo {
    public Foo(){
    // get MyObj bean here
    }
}

public class Var {
    public void varMethod(){
            Foo foo = new Foo();
    }
}
Run Code Online (Sandbox Code Playgroud)

java spring javabeans

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

Model,javabean和POJO之间的区别

我开始用spring学习MVC.我听过很多时间Bean,包含了setter和getter.Model基本上是什么数据流动,Pojo哪些是相同的Bean.但是我在这个术语中真的很困惑,所有这些对我来说都是一样的,请你们解释一下这些术语的确切区别.

JAVABEAN

POJO

模型

java model pojo javabeans

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