我无法在Pojo类中使messageSource工作,它抛出了nullpointerexception。但是在所有其他类即控制器中,服务messageSource工作正常。有人可以建议需要做什么吗?
@Autowired
private MessageSource messageSource;
我使用上面的代码片段自动发送了MessageSource。
public class ProposalWiseSelectionForm implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@Autowired
private MessageSource messageSource;
private String txtPageHierarchy="";
private String txtLineOfBusiness;
private String txtProduct;
private String btn;
private String clickedGo="N";
private List arrLineOfBusiness=new ArrayList();
private List arrProduct=new ArrayList();
@Valid
private ArrayList documentList=initiateDocumentList();
private String txtPageMode="I";
private String enableDiscardBtn="N";
private String enableInsertBtn="N";
private String isDivVisible="N";
private int numApplicationType=1;
public ProposalWiseSelectionForm() {
}
public String getTxtPageHierarchy() {
return txtPageHierarchy;
}
public void setTxtPageHierarchy(String txtPageHierarchy) {
this.txtPageHierarchy = txtPageHierarchy;
}
public String getTxtLineOfBusiness() {
return txtLineOfBusiness;
}
public void setTxtLineOfBusiness(String txtLineOfBusiness) {
this.txtLineOfBusiness = txtLineOfBusiness;
}
public String getTxtProduct() {
return txtProduct;
}
public void setTxtProduct(String txtProduct) {
this.txtProduct = txtProduct;
}
public String getBtn() {
return btn;
}
public void setBtn(String btn) {
this.btn = btn;
}
public String getClickedGo() {
return clickedGo;
}
public void setClickedGo(String clickedGo) {
this.clickedGo = clickedGo;
}
public List getArrLineOfBusiness() {
return arrLineOfBusiness;
}
public void setArrLineOfBusiness(List arrLineOfBusiness) {
this.arrLineOfBusiness = arrLineOfBusiness;
}
public List getArrProduct() {
return arrProduct;
}
public void setArrProduct(List arrProduct) {
this.arrProduct = arrProduct;
}
public void setArrProduct(ArrayList arrProduct) {
this.arrProduct = arrProduct;
}
public ArrayList getDocumentList() {
return documentList;
}
public void setDocumentList(ArrayList documentList) {
this.documentList = documentList;
}
public String getTxtPageMode() {
return txtPageMode;
}
public void setTxtPageMode(String txtPageMode) {
this.txtPageMode = txtPageMode;
}
public String getEnableDiscardBtn() {
return enableDiscardBtn;
}
public void setEnableDiscardBtn(String enableDiscardBtn) {
this.enableDiscardBtn = enableDiscardBtn;
}
public String getEnableInsertBtn() {
return enableInsertBtn;
}
public void setEnableInsertBtn(String enableInsertBtn) {
this.enableInsertBtn = enableInsertBtn;
}
public String getIsDivVisible() {
return isDivVisible;
}
public void setIsDivVisible(String isDivVisible) {
this.isDivVisible = isDivVisible;
}
public int getNumApplicationType() {
return numApplicationType;
}
public void setNumApplicationType(int numApplicationType) {
this.numApplicationType = numApplicationType;
}
}
答案 0 :(得分:1)
尝试使用@ Component,您可能会遇到此问题,因为Pojo类未被识别。
答案 1 :(得分:1)
为了能够在类中使用@Autowired
,该类必须由Spring管理。
的
您的ProposalWiseSelectionForm
类显然不是由Spring管理的,因此messageSource
始终为空。
在其他类中使用@Autowired MessageSource messageSource
是有效的,因为正如你所提到的那些类是由Spring管理的(正如你所提到的那样,它们是控制器,服务等)。
我猜测ProposalWiseSelectionForm
是用于从表单中捕获值的DTO。这类课程不会是一个Spring bean,因此你不能将内容自动装入其中。
我建议您将所需的逻辑移出DTO并移入控制器(或某些Spring托管实用程序),或者在DTO中绝对需要@Autowired
的极端情况下,请查看{ {1}} here和here
答案 2 :(得分:0)
你必须让你的类成为一个Spring bean
向您的班级添加@Component
注释,并将这两行添加到您的appContext.xml中:
<context:component-scan base-package="com.<your-company-name>" />
<context:annotation-config />
如果您不希望使用Spring组件扫描功能,只需在appContext.xml中的beans部分添加服务。