【问题标题】:Can't make messageSource work in the Pojo classes无法使 messageSource 在 Pojo 类中工作
【发布时间】:2014-08-07 11:59:58
【问题描述】:

我无法让 messageSource 在 Pojo 类中工作,它会引发空指针异常。然而,在所有其他类(即控制器)中,服务消息源工作正常。有人可以建议需要做什么吗?

@Autowired
private  MessageSource messageSource;

我已经使用上面的代码 sn-p 自动连接了 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;
}
}

【问题讨论】:

  • 你能粘贴更多讨论过的课程,而不仅仅是 1 行吗?
  • 已修改代码,请检查!

标签: java spring-mvc annotations


【解决方案1】:

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

在您的其他类中使用 @Autowired MessageSource messageSource 是可行的,因为正如您所提到的,这些类是由 Spring 管理的(正如您所提到的,它们是控制器、服务等)。

我猜ProposalWiseSelectionForm 是一个用于从表单中捕获值的 DTO。这种类不会是 Spring bean,因此您无法将内容自动装入其中。

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

【讨论】:

    【解决方案2】:

    尝试使用@Component,你可能会遇到这个问题,因为 Pojo 类没有被识别。

    【讨论】:

    • 我没有运气! MessageSource 实例仍然为空。
    【解决方案3】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-28
      相关资源
      最近更新 更多