Struts2无法实例化操作,更新到Java 7后Class不能为null

时间:2016-02-02 11:53:21

标签: java eclipse struts2

我需要将旧项目从Java 6更新到Java 7.整个项目在Java 6上运行正常,但是当我更改为Java 7时,项目的某些部分会给我这个错误:

Unable to instantiate Action, com.xxx.action.domain.CaseAction,  defined for '' in namespace '/'Class must not be null

根据this thread,用户说问题是该项目在使用Java 7时使用Java 6编码。

但我更改了所有可能的设置以在Java 7中编译项目,并在Java 7中运行它,并且没有构建错误。该项目大部分都运行正常,只是某些特定页面存在此问题。

是否有任何设置我没有以正确的方式配置?或者我错过了什么?

我正在使用Eclipse和Tomcat 6。

如果您希望我在此处添加任何内容,请告知我们。

更新

struts.xml中

     <action name="*_Case" class="com.xxx.action.domain.CaseAction" method="{1}">
        <result name="success">CaseList.jsp</result>
        <result name="inputAdm">CaseForm.jsp</result>
        <result name="inputEduc">CaseForm.jsp</result>
        <result name="cancel" type="redirect">list_Case.html</result>
        <result name="text">text.jsp</result>
        <result name="list" type="redirect">list_Case.html</result>
        <result name="filter">CaseTable.jsp</result>
        <result name="viewlist">CaseViewList.jsp</result>
        <result name="publicViewList">PublicCaseViewList.jsp</result>
        <result name="termos">Termos.jsp</result>
        <result name="delete">CaseList.jsp</result>
        <result name="dicasProjetos">DicasProjetos.jsp</result>
    </action>

CaseAction.java

public String publicViewList() {
    if(!isNewFiltro()) {
        filter = (Filtro)session.get("FILTRO");

        if(filter != null && !filter.getClazz().equals(getNew().getClass())) {
            filter = null;
        }
    }

    if(filter == null) {
        filter = new Filtro<CaseTO>();
    }
    filter.setActionContext(ActionContext.getContext());
    filter.setClazz(getNew().getClass());
    buildExample();
    ((CaseTO)base).setCaseStatus(CaseTO.CASE_STATUS_APROVADO);
    ((CaseTO)base).setPublicado(Boolean.TRUE);
    filter.setExample((CaseTO)base);
    filter.setPageSize(Integer.MAX_VALUE);
    bases = mgr.getList(filter);
    String basesJson = "";
    ArrayList<CaseTO> list = new ArrayList<CaseTO>();
    try{

        for(CaseTO caseTO: (List<CaseTO>)bases){
            if(caseTO.getLatitude() != null && caseTO.getLongitude() != null){
                if(caseTO.getEducador() != null)
                    caseTO.getEducador().setEducadorInstituicoes(null);
                caseTO.setEducadoresRelacionados(null);
                list.add(caseTO);
            }
        }
        Gson g = new Gson();
        basesJson = g.toJson(list, list.getClass());
    }catch(Exception e){
        e.printStackTrace();
    }

    List<CaseTO> cases1 = bases.size() > 0 ? bases.size() > 2 ? bases.subList(0, 2) : bases.subList(0, bases.size()-1) : new ArrayList<CaseTO>();
    List<CaseTO> cases2 = bases.size() > 2 ? bases.subList(2, bases.size()) : new ArrayList<CaseTO>();

    ActionContext.getContext().put("casesJson", basesJson);
    ActionContext.getContext().put("resultSize", list.size());

    ActionContext.getContext().put("cases1", cases1);
    ActionContext.getContext().put("cases2", cases2);
    return "publicViewList";

}

我把文件的相关部分放在一边,因为它们有点大。 给我的问题的URL是/publicViewList_Case.html,所以应该执行的方法是publicViewList,即使它显然在抛出异常之前没有被执行。

0 个答案:

没有答案