2017-06-11 82 views
0
@Controller 
@RequestMapping(value = "/myProject") 
public class myClassController { 

    @Autowired 
    Mydata data; 
    @RequestMapping(method = RequestMethod.GET, value = "/mydetails/{id}") 
    public @ResponseBody Mydata mymethod(@PathVariable(value = "id") String id, 
             HttpServletRequest request) { 
     data.setId(id); 
     return data; 
    } 
} 
@Component 
class Mydata { 
    private String Id; 

    public String getId() { 
     return Id; 
    } 

    public void setId(String s) { 
     this.Id= Id; 
    } 
} 

问题 在这里,我自动装配“MYDATA”后为空,而在的MyMethod(),我能看到调试过程中有一些id的值。 设置该值后,它变为空。 ie)data.getId()返回null。 请注意:'data'不为null。 当我使用new实例化Mydata时,它的工作正常。 我的自动装配有什么问题?请帮忙..自动装配Autowired实例的属性,甚至设置值

+0

独立于此问题,您应该重新考虑您的方法。你在这里可能不会安全。 – Henry

回答

2

这不是与Spring和自动装配有关的错误。
这只是一个简单的赋值错误。

在这里,你不要在参数分配给字段:

public void setId(String s) { 
    this.Id= Id; 
} 

您的字段分配给自己。它没有效果。

你还是做:

public void setId(String s) { 
    this.Id= s; 
} 

而作为一个侧面说明,如果你要尊重命名约定:变量名称应该以小写开始(id而不是Id)。

+0

哎呀!这是一个错字.. @davidxxx –

+0

这些都是发生的事情。通常,我努力用IDE重新生成getter和setter,而不是手动编写或修改它。这些都是非常简单的方法,因为我们低估了手动错误。 – davidxxx

+0

这是一个错字,当我在这里发帖时就进来了。我在代码中正确地做了这件事。你可以在我的自动装配中找到任何问题吗? @davidxxx –

相关问题