无法使MessageSource在Pojo类中工作

时间:2014-08-07 11:59:59

标签: java spring-mvc annotations

我无法在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;
}
}

3 个答案:

答案 0 :(得分:1)

尝试使用@ Component,您可能会遇到此问题,因为Pojo类未被识别。

答案 1 :(得分:1)

为了能够在类中使用@Autowired,该类必须由Spring管理。 的 您的ProposalWiseSelectionForm类显然不是由Spring管理的,因此messageSource始终为空。

在其他类中使用@Autowired MessageSource messageSource是有效的,因为正如你所提到的那些类是由Spring管理的(正如你所提到的那样,它们是控制器,服务等)。

我猜测ProposalWiseSelectionForm是用于从表单中捕获值的DTO。这类课程不会是一个Spring bean,因此你不能将内容自动装入其中。

我建议您将所需的逻辑移出DTO并移入控制器(或某些Spring托管实用程序),或者在DTO中绝对需要@Autowired的极端情况下,请查看{ {1}} herehere

答案 2 :(得分:0)

你必须让你的类成为一个Spring bean

向您的班级添加@Component注释,并将这两行添加到您的appContext.xml中:

<context:component-scan base-package="com.<your-company-name>" />
<context:annotation-config />

如果您不希望使用Spring组件扫描功能,只需在appContext.xml中的beans部分添加服务。