本人的开发环境是:Tomcat7+Struts2+JDK1.6+myeclipse8.6。问题如下,在页面中点击“部门管理”,根据:(第24行)String departmentname=Change.toChinese(getDepartment().getDepartmentname()!=null?getDepartment().getDepartmentname():request.getParameter("departmentname"));判断SQL的查询条件。
可每次点击后总会抛出NULL错误,Tomcat提示的错误是:HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
java.lang.NullPointerException
com.pingpingme.action.DepartmentAction.list(DepartmentAction.java:24)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)DepartmentAction.java的代码如下:package com.pingpingme.action;
import java.util.ArrayList;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.ServletActionContext;
import com.pingpingme.dao.DepartmentDao;
import com.pingpingme.actionform.Department;
import com.pingpingme.tools.Change;
public class DepartmentAction extends ActionSupport {
DepartmentDao departmentdao=new DepartmentDao();
private Department department;
public void setDepartment(Department department) {
this.department=department;
}
public Department getDepartment() {
return department;
}
//查询所有部门
public String list() throws Exception {
ArrayList departmentList=new ArrayList();
HttpServletRequest request=ServletActionContext.getRequest();
String departmentname=Change.toChinese(getDepartment().getDepartmentname()!=null?getDepartment().getDepartmentname():request.getParameter("departmentname"));
if(departmentname==null || departmentname.equals("")) departmentname="all";
String sql="";
if(departmentname.equals("all")) {
sql="select * from tb_department";
}else {
sql="select * from tb_department where departmentname='"+departmentname+"'";
}
String currentpage=request.getParameter("i");
if(currentpage==null || currentpage.equals("")) currentpage="0";
departmentList=departmentdao.getAllDepartment(sql);
int numrs=departmentList.size();
int maxpage=departmentList.size();
if(maxpage%12==0) {
maxpage=maxpage/12;
}else {
maxpage=maxpage/12+1;
}
request.setAttribute("currentpage",currentpage);
request.setAttribute("maxpage", String.valueOf(maxpage));
request.setAttribute("numrs", String.valueOf(numrs));
request.setAttribute("departmentList", departmentList);
request.setAttribute("pagepath", "/Departmentlist.action");
request.setAttribute("departmentname", departmentname);
return "list";
}
}
烦请各位看看,为什么会抛出这个错误,如何解决,谢谢!

解决方案 »

  1.   

    department可能是null不知道你是如何传值的!
      

  2.   

    点击“部门管理”是查询所有的部门信息然,后进入到查询结果页面,查询结果页面是:一个简单的查询条件(根据部门名称查询)加上查询到的资料。JSP页面的代码如下:
    <%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
    <%@ page import="com.pingpingme.actionform.Department" %>
    <%@ page import="java.util.ArrayList" %>
    <%@ taglib prefix="s" uri="/struts-tags" %>
    <%
      String pagepath=(String)request.getAttribute("pagepath");
      if(pagepath==null) pagepath="";
      ArrayList departmentList=(ArrayList)request.getAttribute("departmentList");
      int currentpage=Integer.parseInt((String)request.getAttribute("currentpage"));
      int maxpage=Integer.parseInt((String)request.getAttribute("maxpage"));
      int numrs=Integer.parseInt((String)request.getAttribute("numrs"));
      int start=currentpage*12;               //开始条数
      int over=(currentpage+1)*12;            //结束条数
      int count=numrs-over;                   //还剩多少条记录
      if(count<0) over=numrs;
     %>
    <div class="page">
      <div class="pageHeader">
        <s:form id="" theme="simple" onsubmit="return navTabSearch(this);" action="Departmentlist" method="post">
          <div class="searchBar">
            <ul class="searchContent">
              <li> <label>部门名称:</label> <s:textfield size="16"></s:textfield> </li>
            </ul>
            <div class="subBar">
              <ul>
                <li><div class="buttonActive"> <div class="buttonContent"> <button type="submit">检索</button> </div> </div></li>
                <li>
                  <a class="button" href="" target="dialog" rel="rel_pagel" title="查询框"> <span>高级检索</span> </a>
                </li>
              </ul>
            </div>
          </div>
        </s:form>
      </div>
      <div class="pageContent">
        <div class="panelBar">
          <ul class="toolBar">
            <li><a class="add" href="#" target="navTab"><span>添加</span></a></li>
            <li><a class="delete" href="#" target="navTabTodo" title="确定要删除吗?"><span>删除</span></a></li>
            <li><a class="edit" href="#" target="navTab"><span>修改</span></a></li>
          </ul>
        </div>
        <table class="table" layouth="138">
          <thead>
            <tr>
      <th style="width:120px;">公司编号</th>
      <th style="width:140px;">部门编号</th>
      <th style="width:100px;">部门名称</th>
      <th style="width:150px;">部门信息</th>
      <th style="width:50px;">上级部门</th>
      <th style="width:75px;">显示顺序</th>
      <th style="width:60px;">备注</th>
            </tr>
          </thead>
          <tbody>
            <%
             for(int i=start;i<over;i++) {
               Department department=(Department)departmentList.get(i);
            %>
            <tr>
              <td> <%=department.getCompanycode() %> </td>
              <td> <%=department.getDepartmentcode() %> </td>
              <td> <%=department.getDepartmentname() %> </td>
              <td> <%=department.getDepartmentdescription() %></td>
              <td> <%=department.getParentdepartment() %> </td>
              <td> <%=department.getIndexorder() %> </td>
              <td> <%=department.getRe() %> </td>
            </tr>
            <%
             }
            %>
          </tbody>
        </table>
        <div class="panelBar">
          <div class="pages">
            <span>共有${maxpage}</span><span>页,总共${numrs}条,</span><span>当前为第${currentpage+1}页</span>
          </div>
          <div class="pages" >
           <s:form theme="simple" onsubmit="return navTabSearch(this);" action="Departmentlist" title="部门管理">
            <%if((currentpage+1)==1) {%>首页<%}else { %><a href="<%=request.getContextPath()%><%=pagepath%>?i=0" target="navTab" title="部门管理">[首页]</a><%} %>&nbsp;
            <%if(maxpage<=(currentpage+1)) {%>尾页<%}else{ %><a href="<%=request.getContextPath()%><%=pagepath%>?i=<%=maxpage-1 %>" target="navTab" title="部门管理">[尾页]</a><%} %>&nbsp;
            <select name="i">
              <%
                for(int j=0;j<maxpage;j++) {  
              %>
              <option value="<%=j%>"><%=j+1 %></option>
              <%} %>
            </select>
            <input type="submit" name="Submit" value="查询">&nbsp;&nbsp;
            <%if((currentpage+1)==1){%>上一页<%}else{%><a href="<%=request.getContextPath()%><%=pagepath%>?i=<%=currentpage-1 %>" target="navTab" title="部门管理">上一页</a><%} %>&nbsp;
            <%if(maxpage<(currentpage+1)){%>下一页<%}else{ %><a href="<%=request.getContextPath()%><%=pagepath%>?i=<%=currentpage+1 %>" target="navTab" title="部门管理">下一页</a><%} %>&nbsp;
           </s:form>
          </div>
        </div>
      </div>
    </div>
      

  3.   

    一般这样写比较好null != getDepartment().getDepartmentname()
      

  4.   

    你这里的 getDepartment() 一定是空值  
    所以你还要先判断 
    null!=getDepartment()应该是下面这样写
    (null!=getDepartment())&&(null != getDepartment().getDepartmentname())
      

  5.   

    department = null了。