2014-02-23 84 views
0

我试图发现豆如何工作,也试图遵循春季官方豆教程(http://docs.spring.io/spring/docs/1.2.x/reference/beans.html)。春豆和类

我想写一个应用程序,它只是加载一个bean.xml文件,并从它获取一个bean,将其设置为一个变量。

Car car = (Car) beans.getBean("car"); 

这正是我bean.xml看起来像:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> 

<beans> 
    <bean id="person" class="com.vlad.myapp.Person"> 
    <property name="name"><value>"Bob"</value></property> 
    <property name="lastName"><value>"Bobson"</value></property> 
    <property name="id"><value>1</value></property> 
    </bean> 

</beans> 

这里是我的Person.java类:

package com.vlad.myapp; 

public class Person { 

    private String name; 
    private String last_name; 
    private int id; 

    public Person(String name,String last_name,int id) 
    { 
     this.name = name; 
     this.last_name = last_name; 
     this.id = id; 
    } 

    public String name() 
    { 
     return name; 

    } 

    public String last_name(){ 
     return last_name; 
    } 
    public int id() 
    { 
     return id; 
    } 

    public void setName(String name){ 
     this.name = name; 
    } 
    public void setLastName(String name){ 
     this.last_name = name; 
    } 
    public void setId(int id) 
    { 
     this.id = id; 
    } 



} 

在我的控制,我试图加载bean文件并获取其中的一个bean,如Car示例中所示:

ClassPathXmlApplicationContext beans = new ClassPathXmlApplicationContext("bean.xml"); 
    Person person = (Person) beans.getBean("person"); 
    model.addAttribute("person",person); 
    return "home"; 

在视图我想简单地打印出人的名字:

<p>The person's name is: ${person.name()}</p> 

但是,所有我从我的网页获得加载时是:

这个人的名字是:

看起来好像视图无法获取变量?

这里是我的目录结构:

enter image description here

+0

为什么你阅读文档的Spring 1.2的版?目前的Spring版本是4.0.2。 1.2已完全过时。 –

+0

@JBNizet看起来好像我无法找到关于spring bean的最新教程。语法改变了多少?这种方法过时了吗?我见过最近的教程使用 – Bula

+0

http://docs.spring.io/spring/docs/4.0.x/spring-framework-reference/htmlsingle/。它直接从春季主页链接:http://spring.io。但是,您应该首先了解并尊重Java命名约定和Java Bean约定。此外,你不应该从你的控制器创建一个新的Spring上下文来获取bean。相反,这个bean应该被注入到控制器中。这是依赖注入的关键。是的,1.2是完全过时的,特别是当涉及到Spring MVC时。 –

回答

0

您需要创建POJO。你的干将是错误的,它应该是:

public String getName() 
    { 
     return name; 
    } 
    public String getLastName(){ 
     return last_name; 
    } 
    public int getId() 
    { 
     return id; 
    } 
2
  1. 终止阅读关于Spring 1.2!
  2. 使用POJO - getter和setter方法(改变方法名的getName()等)
  3. 尝试<p>The person's name is: ${person.name}</p>而不是$ {person.name()}
+2

+1。但是JSTL不需要使用JSP EL。 –

+0

啊,你说得对:) – Stuart

+0

@pospeq我改变了我所有的getters,以尊重pojo的原则。此外,我使用$ {person.name},但它仍然具有相同的输出 – Bula