本人的开发环境是: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";
}
}
烦请各位看看,为什么会抛出这个错误,如何解决,谢谢!
可每次点击后总会抛出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";
}
}
烦请各位看看,为什么会抛出这个错误,如何解决,谢谢!
<%@ 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><%} %>
<%if(maxpage<=(currentpage+1)) {%>尾页<%}else{ %><a href="<%=request.getContextPath()%><%=pagepath%>?i=<%=maxpage-1 %>" target="navTab" title="部门管理">[尾页]</a><%} %>
<select name="i">
<%
for(int j=0;j<maxpage;j++) {
%>
<option value="<%=j%>"><%=j+1 %></option>
<%} %>
</select>
<input type="submit" name="Submit" value="查询">
<%if((currentpage+1)==1){%>上一页<%}else{%><a href="<%=request.getContextPath()%><%=pagepath%>?i=<%=currentpage-1 %>" target="navTab" title="部门管理">上一页</a><%} %>
<%if(maxpage<(currentpage+1)){%>下一页<%}else{ %><a href="<%=request.getContextPath()%><%=pagepath%>?i=<%=currentpage+1 %>" target="navTab" title="部门管理">下一页</a><%} %>
</s:form>
</div>
</div>
</div>
</div>
所以你还要先判断
null!=getDepartment()应该是下面这样写
(null!=getDepartment())&&(null != getDepartment().getDepartmentname())