struts2+spring+hibernate+extjs,下面是我的struts2代码
public class EmployeeAction extends BaseAction
{
private ICommon employeeService;
private PageResult pageResult=new PageResult();
private EmployeeModel eModel=new EmployeeModel();
public void setEmployeeService(ICommon employeeService)
{
this.employeeService = employeeService;
}

public EmployeeModel getEModel()
{
return eModel;
} public void setEModel(EmployeeModel model)
{
eModel = model;
} public PageResult getPageResult()
{
return pageResult;
} public void setPageResult(PageResult pageResult)
{
this.pageResult = pageResult;
} public String getAllEmployee()
{
int start = Integer.valueOf(getRequest().getParameter("start"));
int limit = Integer.valueOf(getRequest().getParameter("limit"));
String sort=getRequest().getParameter("sort");
String dir=getRequest().getParameter("dir");
if(dir==null)
{
dir="ASC";
}

pageResult=employeeService.getList(SqlCreator.queryRecTotal("EpareEmployee"), SqlCreator.createQuerySort("EpareEmployee",sort,dir), start, limit,1);
return SUCCESS;
}

public String getSpecialEmployee()
{
String id=getRequest().getParameter("id").trim();
EpareEmployee employee=(EpareEmployee)employeeService.getObj(Long.valueOf(id), EpareEmployee.class);
eModel.setId(employee.getId());
eModel.setName(employee.getName());
eModel.setSpell(employee.getSpell());
eModel.setDeptid(employee.getDeptid());
eModel.setBirthplace(employee.getBirthplace());
return SUCCESS;
}
}
这是我的struts.xml
<struts>
<include file="struts-default.xml" />
<package name="json" extends="json-default"  namespace="/employee">
<action name="findAllEmployee" class="employeeAction" method="getAllEmployee">
<result type="json">
<param name="root">pageResult</param>
</result>
</action>

<action name="findeSpecEmployee" class="employeeAction" method="getSpecialEmployee">
<result type="json">                    </result>
</action>

</package>
</struts>
我在一个jsp页面中调用Extjs执行了getSpecialEmployee方法,结果,总是报
 java.lang.NumberFormatException: null
错误指向int start = Integer.valueOf(getRequest().getParameter("start"));而该行在getAllEmployee()方法内,这是怎么回事啊,我debug之后却是发现每次都要跑到这个方法里,我实在搞不清楚怎么回出这种事啊?
我的Extjs如下,是一个单独的js文件,里面就如下这几行代码
Ext.onReady(
function()
{
var grid=new Ext.grid.PropertyGrid(
{
id:'propGrid',
title:'员工属性',
autoHeight:true,
width:300,
renderTo:'grid',
source:{}
}
);

var propertyStore = new Ext.data.JsonStore({
        autoLoad: true, 
        url: '../employee/findeSpecEmployee.action?id=103',
        root: '${eModel}',
        fields:[{name:'姓名',mapping:'name'}, {name:'英文',mapping:'spell'},{name:'所属部门',mapping:'deptid'},{name:'籍贯',mapping:'birthplace'}],        
        listeners: {
            load: function(store, records, options){                                     
                    var propGrid = Ext.getCmp('propGrid');                    
                    if (propGrid) {                        
                     alert(Ext.encode(store.getAt(0).data));
                        propGrid.setSource(store.getAt(0).data);
                    }                    
                }
            
        }
    }); 
}
);
另外就是调用这个Extjs的jsp页面,里面什么都没有只有包含上述js文件的语句,请高人指点!!!

解决方案 »

  1.   

    int start = Integer.valueOf(getRequest().getParameter("start"));
    通过start得到的值为null.null不能转化为int类型。肯定会报错。把int改成Integer试试?
      

  2.   

    你把url改一下用findeSpecEmployee!getSpecialEmployee.action试试
      

  3.   

    因为在调用action的方法时,会先执行里面的get和set方法,所以getSpecialEmployee每次都会调用,改个名字就可以了
      

  4.   

    <action name="findAllEmployee" class="employeeAction" method="getAllEmployee">这里配置了action.url: '../employee/findeSpecEmployee.action?id=103',
     没有start这个参数, 所以getRequest().getParameter("start")=null的;
    int start = Integer.valueOf(getRequest().getParameter("start")); 当然会报异常了。
      

  5.   

    我也碰到过struts2中莫名调用的问题,4楼说的有理。
      

  6.   

    sunmm0910,我验证了果然是你说的那样……