标签: javabeans

从servlet过滤器和标记访问Spring bean

我可以使用我的Servlet访问Spring bean

WebApplicationContext springContext = 
    WebApplicationContextUtils.getWebApplicationContext(getServletContext()); 
Run Code Online (Sandbox Code Playgroud)

在Servlet的init方法中.

我想知道是否有相当于WebApplicationContextservlet过滤器?另外,是否可以在标记类中访问Spring bean?

tags spring servlets javabeans servlet-filters

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

javax.el.PropertyNotFoundException:在com.example.Bean类型上找不到属性'foo'

我有结果

Query query = session.createQuery("From Pool as p left join fetch p.poolQuestion as s");
Run Code Online (Sandbox Code Playgroud)

查询,我想在JSP上显示它.

我有循环:

<c:forEach items="${pools}" var="pool"> 

    <p>${pool.name}</p>

</c:forEach>
Run Code Online (Sandbox Code Playgroud)

我想显示poolQ​​uestion表(连接表)的结果.我想要显示的值是"回答".

我该怎么做?

<c:forEach items="${pools}" var="pool"> 
    <p>${pool.answer}</p>
    <p>${pool.name}</p>             
</c:forEach>
Run Code Online (Sandbox Code Playgroud)

上面的代码不起作用.

错误是:

  org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/views/home.jsp at line 21

18:     <c:forEach items="${pools}" var="pool"> 
19:             
20:             <p>${pool.name}</p>
21:             <c:out value="${pool.poolQuestion.answer}"/>
22:             
23:     </c:forEach>
24: 

    SEVERE: Servlet.service() for servlet appServlet threw exception
javax.el.PropertyNotFoundException: Property 'answer' not found on type com.pool.app.domain.Pool
    at javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:214)
    at javax.el.BeanELResolver$BeanProperties.access$400(BeanELResolver.java:191)
    at javax.el.BeanELResolver.property(BeanELResolver.java:300)
    at javax.el.BeanELResolver.getValue(BeanELResolver.java:81)
    at …
Run Code Online (Sandbox Code Playgroud)

jsp jstl el javabeans propertynotfoundexception

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

使用Java Bean有什么好处?

我相信我理解Java Beans是什么:包含no-arg构造函数的Java类是可序列化的,并使用getter和setter公开它们的字段.

  1. Java Bean是否必须公开其所有字段才能获得bean的资格?如果不是,它甚至不得暴露任何

  2. May Java Beans是否包含带参数的构造函数以及无参数构造函数?

  3. Java Bean的目的是什么,除了符合某种编码风格?似乎有很多关于'豆豆'或'豆豆'的讨论,但我不知道为什么它们是有利的,特别是.

我完全可以制作no-arg构造函数.可能有很多原因,如果无参数构造函数帮助编译器进行一些优化,我也不会感到惊讶.我也可以理解让你的课程可序列化.即使该类从未被序列化,也可能是,并且回溯可能会令人讨厌(或者在黑盒子库中不可能).

但最令人好奇的是要求所有字段都可以通过getter和setter访问.当我需要它时,我确实在我自己的工作中使用它们,但Java Beans需要它们(可能所有这些,取决于我对#1的回答)似乎很奇怪.如果它是反射的问题,那么反射是否也不容易得到字段?如果这不仅仅是设置值的问题,那么如果方法存在,反射是否不能在字段上使用getter/setter?

java javabeans

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

Java Reflection Beans Property API

是否有任何标准方法来访问Java Bean Property

class A {
   private String name;

   public void setName(String name){
       this.name = name;
   }

   public String getName(){
       return this.name;
   }

}
Run Code Online (Sandbox Code Playgroud)

所以我可以使用Reflection API访问这个java bean属性名,这样当我更改property的值时,当我设置并获取该属性的值时,会自动调用getName和setName的方法.

java reflection javabeans

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

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

使用Spring时,只有在传递的值不为null时才可以设置属性吗?

例:

<bean name="myBean" class="some.Type">
   <property name="abc" value="${some.param}"/>
</bean>
Run Code Online (Sandbox Code Playgroud)

我正在寻找的行为是:

some.Type myBean = new some.Type();
if (${some.param} != null) myBean.setAbc(${some.param});
Run Code Online (Sandbox Code Playgroud)

我需要这个的原因是因为abc有一个默认值,我不想用a覆盖null.我正在创建的Bean不在我的源代码控制之下 - 所以我无法改变它的行为.(另外,abc为此目的可能是原始的,所以无论如何我都不能用null设置它.

编辑:
根据答案,我认为我的问题需要澄清.

我有bean我需要实例化并传递给我使用的第三方.这个bean拥有各类(的许多特性(目前12) ,,int 等), 每个属性都有一个默认值-我不知道它是什么,宁愿不需要知道,除非它成为一个问题.我正在寻找的是一个来自Spring的能力的通用解决方案 - 目前我唯一的解决方案是基于反射.booleanString

组态

<bean id="myBean" class="some.TypeWrapper">
   <property name="properties">
     <map>
         <entry key="abc" value="${some.value}"/>
         <entry key="xyz" value="${some.other.value}"/>
         ...
      </map>
   </property>
</bean>
Run Code Online (Sandbox Code Playgroud)

public class TypeWrapper
{
    private Type innerBean;

    public TypeWrapper()
    {
        this.innerBean = new Type();
    }

    public void setProperties(Map<String,String> properties)
    {
        if (properties …
Run Code Online (Sandbox Code Playgroud)

java spring javabeans

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

Bean验证组 - 正确理解它

我试图了解Bean验证中的Groups.

所以,例如,如果我有一个bean,并且我只想要某些字段验证某些字段,我应该将它们分组?

 @NotNull (groups=MyClassX.class)
 @Min (groups=MyClassA.class)  // 1
 @Pattern(xxxxx, groups = MyClassA.class) // 2
 private String field1;

 @NotNull (groups=MyClassX.class)
 @Min (groups=MyClassX.class)
 @Pattern(xxxxx, groups=MyClassX.class))
 private String field2;

 @NotNull (groups=MyClassX.class)
 @Min (groups=MyClassX.class)
 @Pattern(xxxxx, groups=MyClassA.class) //3
 private String field3;
Run Code Online (Sandbox Code Playgroud)

我从上面的例子理解是,如果我通过MyClassA对验证,则仅@Min@PatternField1@Patternfield3只验证?(标有数字1,2和3)

我理解正确吗?没有Groups属性,我没有留下任何字段.所以没有默认组.

java javabeans bean-validation

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

为什么Java Bean被称为"bean"?

我是一名Java开发人员,我每天都在和Beans合作.我很好奇"Bean"这个名字的历史.它只是来自咖啡豆,还是还有其他东西?

java javabeans

23
推荐指数
2
解决办法
4835
查看次数

在净豆的词包裹

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

java ide netbeans javabeans

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

当用@PostConstruct标记的方法调用时?

在JSF请求处理生命周期的哪个阶段,用@PostConstruct标记的支持bean方法调用?

java jsf annotations javabeans

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

什么时候是一个spring beans destroy-method叫做?

我在bean的"destroy-method"中放了一个sysout语句.当我运行示例代码时,sysout没有得到输出.这是否意味着破坏方法没有被调用?

测试类:

  package spring.test;

  import org.springframework.context.ApplicationContext;
  import org.springframework.context.support.ClassPathXmlApplicationContext;

  public class InitTest {
    public static void main(String[] args) {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("InitTestContext.xml");
        InitTestBean bean = (InitTestBean)ctx.getBean("InitTestBean");
        bean.display();
    }
  }
Run Code Online (Sandbox Code Playgroud)

  package spring.test;

  public class InitTestBean {
    private String prop1;
    private String prop2;

    public InitTestBean(String prop1, String prop2) {
        System.out.println("Instantiating InitTestBean");
        this.prop1 = prop1;
        this.prop2 = prop2;
    }

    public void setProp1(String prop1) {
        System.out.println("In setProp1");
        this.prop1 = prop1;
    }

    public void setProp2(String prop2) {
        System.out.println("In setProp2");
        this.prop2 = prop2;
    } …
Run Code Online (Sandbox Code Playgroud)

java spring javabeans destroy

22
推荐指数
4
解决办法
5万
查看次数