【问题标题】:ognl.OgnlException: target is null for setProperty...?ognl.OgnlException:setProperty 的目标为空...?
【发布时间】:2011-02-21 09:43:34
【问题描述】:

我是 Struts 2 的新手。我正在创建一个演示 Web 应用程序,它允许用户在 jsp 上提交员工详细信息并在下一个 jsp 上显示它们。以下是代码:

struts.xml

<struts>
    <constant name="struts.custom.i18n.resources" value="ApplicationResources" />

    <!-- Configuration for the default package. -->
    <package name="default" extends="struts-default" namespace="/">

        <action name="empDetails" class="com.webapp.test.action.MyAction"
            method="employeeDetails">
            <result name="success">jsp/employeeDetails.jsp</result>
        </action>

        <action name="addEmployee" class="com.webapp.test.action.MyAction"
            method="addEmployee">
            <result name="success">jsp/addEmployee.jsp</result>
        </action>
    </package>
</struts>

动作类

public class MyAction extends ActionSupport{

    private static final long serialVersionUID = 1L;

    private Employee emp = null; 

    public String addEmployee(){
        System.out.println("In addEmployee");
        return SUCCESS;
    }

    public String employeeDetails(){
        System.out.println("In employeeDetails");
        System.out.println("Employee ID: "+emp.getEmployeeID());
        return SUCCESS;
    }
}

在上述动作类中,Employee是一个单独的模型类,具有以下属性:

String employeeID;
String name;
String department;

以下是我添加员工的 JSP 页面:

<%@taglib uri="/struts-tags" prefix="s"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Add Employee</title>
</head>
<body>
<s:form action="empDetails">
<s:textfield name="emp.employeeID" label="Employee ID"></s:textfield>
<s:textfield name="emp.name" label="Name"></s:textfield>
<s:textfield name="emp.department" label="Department"></s:textfield>
<s:submit></s:submit>
</s:form>
</body>
</html>

点击提交按钮填写员工详细信息后,在employeeDetails()方法中出现空指针异常:

java.lang.NullPointerException
    com.webapp.test.action.MyAction.employeeDetails(MyAction.java:19)

并且服务器控制台显示以下异常:

ognl.OgnlException: target is null for setProperty(null, "department", [Ljava.lang.String;@acd4c9)
.....
ognl.OgnlException: target is null for setProperty(null, "employeeID", [Ljava.lang.String;@c5dd98)
....
ognl.OgnlException: target is null for setProperty(null, "name", [Ljava.lang.String;@5753b0)

请解释问题出在哪里以及如何从 JSP 中填充员工模型对象。我不想在 Action 类中创建 getter setter 方法,也不想使用 ModelDriven 接口。

【问题讨论】:

  • 终于解决了.... MyAction 类中 Employee 引用 'emp' 的 getter setter 方法丢失了 ....

标签: java struts2


【解决方案1】:

Employee 对象引用 emp 的 getter setter 方法在 MyAction 类中丢失。

创建方法后问题已解决。

谢谢!!!

【讨论】:

    猜你喜欢
    • 2021-08-30
    • 2011-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-03
    • 1970-01-01
    相关资源
    最近更新 更多