Struts2问题 action要用的model对象 需要实例化吗

shanpeng238 2009-04-29 05:41:15
Struts2问题 action要用的model对象 需要实例化吗
我用的struts2+hibernate3.0+spring2.0架构
下面是代码片段:
public class ArrangedutyAction extends BaseAction {
/**
*
*/
private static final long serialVersionUID = 1L;
private ArrangedutyManager arrangedutyManager;
private List list;
private CompanyManager companyManager;
private Arrangeduty arrangeduty;
private int c_id;
我用到Arrangeduty 的model对象是这样写会报错
java.lang.NullPointerException
at com.anrui.aroa.web.actions.sp.ArrangedutyAction.add(ArrangedutyAction.java:65)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:404)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:267)
at com.opensymphony.xwork2.DefaultActionInvocation
如果改成就不会出错了啊
public class ArrangedutyAction extends BaseAction {
/**
*
*/
private static final long serialVersionUID = 1L;
private ArrangedutyManager arrangedutyManager;
private List list;
private CompanyManager companyManager;
private Arrangeduty arrangeduty=new Arrangeduty();
private int c_id;
但是我同事他们都用第一种方法 也没错误 有些资料也不用new Arrangeduty() 为什么到我这就错了 希望高手解答我的疑问
...全文
571 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhaixuepan 2012-06-01
  • 打赏
  • 举报
回复
我也碰到这样问题
yejiejay 2010-11-25
  • 打赏
  • 举报
回复
我也是这个问题
luxiaotian1112 2009-10-21
  • 打赏
  • 举报
回复
我也是这个不知道怎么解决
Landor2004 2009-05-05
  • 打赏
  • 举报
回复
你这不是页面错误,而是add方法里的错误,页面参数并没有传递到action的属性中,
声明的时候new一下是能解决,但是也是一个空值

是否缺少了paramter拦截器?正常情况没问题
Landor2004 2009-05-05
  • 打赏
  • 举报
回复
普通javaBean是初始化成null
shanpeng238 2009-05-04
  • 打赏
  • 举报
回复
<form action="arrangeduty_add.action" method="post" name="form1" onSubmit="return CheckForm();">
<table border="0" width="100%" cellspacing="0" cellpadding="3">
shanpeng238 2009-05-04
  • 打赏
  • 举报
回复
<tr>
<td nowrap class="TableLine2" width="100px"> 排班类型说明:</td>
<td colspan="2" class="TableLine1" width='20px' >
<input type="text" name="arrangeduty.duty_name" size="25" maxlength="100" id="duty_name" class="BigInput" value="">
</td>
</tr>
<tr>
<td nowrap class="TableLine2" width="100px"> 第1次登记:</td>
<td width="30px" class="TableLine1"><select name="arrangeduty.duty_type1" id="duty_type1" class="BigSelect">
<option value="1" >上班</option>
<option value="2" >下班</option>
</select>
</td>
<td align='left' class="TableLine1">
<input class="Wtime" type="text" name="arrangeduty.time1" id="time1" value="" size="12" maxlength="10" style="width:'80px'"
onclick="new CallTime(null,null,0,0,null,null).show(this)"/>
</td>
</tr>
<tr>
<td nowrap class="TableLine2"> 第2次登记:</td>
<td class="TableLine1"><select name="arrangeduty.duty_type2" id="duty_type2" class="BigSelect">
<option value="1" >上班</option>
<option value="2" >下班</option>
</select></td>
<td class="TableLine1">
<input class="Wtime" type="text" name="arrangeduty.time2" id="time2" value="" size="12" maxlength="10" style="width:'80px'"
onclick="new CallTime(null,null,0,0,null,null).show(this)"/>

</td>
</tr>
<tr>
<td nowrap class="TableLine2"> 第3次登记:</td>
<td class="TableLine1"><select name="arrangeduty.duty_type3" id="duty_type3" class="BigSelect">
<option value="1" >上班</option>
<option value="2" >下班</option>
</select></td>
<td class="TableLine1">
<input class="Wtime" type="text" name="arrangeduty.time3" id="time3" value="" size="12" maxlength="10" style="width:'80px'"
onclick="new CallTime(null,null,0,0,null,null).show(this)"/>


</td>
</tr>
<tr>
<td nowrap class="TableLine2"> 第4次登记:</td>
<td class="TableLine1"><select name="arrangeduty.duty_type4" id="duty_type4" class="BigSelect">
<option value="1" >上班</option>
<option value="2" >下班</option>
</select></td>
<td class="TableLine1">
<input class="Wtime" type="text" name="arrangeduty.time4" id="time4" value="" size="12" maxlength="10" style="width:'80px'"
onclick="new CallTime(null,null,0,0,null,null).show(this)"/>


</td>
</tr>
<tr>
<td nowrap class="TableLine2"> 第5次登记:</td>
<td class="TableLine1"><select name="arrangeduty.duty_type5" id="duty_type5" class="BigSelect">
<option value="1" >上班</option>
<option value="2" >下班</option>
</select></td>
<td class="TableLine1">

<input class="Wtime" type="text" name="arrangeduty.time5" id="time5" value="" size="12" maxlength="10" style="width:'80px'"
onclick="new CallTime(null,null,0,0,null,null).show(this)"/>

</td>
</tr>
<tr>
<td nowrap class="TableLine2"> 第6次登记:</td>
<td class="TableLine1"><select name="arrangeduty.duty_type6" id="duty_type6" class="BigSelect">
<option value="1" >上班</option>
<option value="2" >下班</option>
</select></td>
<td class="TableLine1">
<input class="Wtime" type="text" name="arrangeduty.time6" id="time6" value="" size="12" maxlength="10" style="width:'80px'"
onclick="new CallTime(null,null,0,0,null,null).show(this)"/>

</td>
</tr>页面的
shanpeng238 2009-05-04
  • 打赏
  • 举报
回复
public Arrangeduty getArrangeduty() {
return arrangeduty;
}

public void setArrangeduty(Arrangeduty arrangeduty) {
this.arrangeduty = arrangeduty;
}
在我的Action中有啊
SunNDown 2009-05-02
  • 打赏
  • 举报
回复
不用SH集成则需要实例化;
用了SH集成则不需要实例化!

你的问题是Set方法没写或属性名匹配错误导致无法NULLPOINT,个人更倾向于你忘写SET方法,因为属性名匹配错误的话编译时就可能提醒出来了!
jinxfei 2009-04-30
  • 打赏
  • 举报
回复
如果你的arrangeduty变量有set方法,有可能不需要实例化,但前提是该次请求有提交的数据需要设置到arrangeduty这个对象里。

这样Struts会在调用你的add方法之前,先调用setArrangeduty方法。
zidasine 2009-04-30
  • 打赏
  • 举报
回复
既然是nullpoint那就在用的时候加个判断
1、arrangeduty的getter和setter方法可写了
2、页面标签name可跟arrangeduty匹配上了
这2个问题详细检查下
shanpeng238 2009-04-30
  • 打赏
  • 举报
回复
谢谢 但是还是没解决啊
tzb08 2009-04-30
  • 打赏
  • 举报
回复
[Quote=引用楼主 shanpeng238 的帖子:]
Struts2问题 action要用的model对象 需要实例化吗
我用的struts2+hibernate3.0+spring2.0架构
下面是代码片段:
public class ArrangedutyAction extends BaseAction {
/**
*
*/
private static final long serialVersionUID = 1L;
private ArrangedutyManager arrangedutyManager;
private List list;
private CompanyManager companyManager;
private Arrangeduty arrangeduty;
private int c_id;
我用到Arrange…
[/Quote]

实例化依情况而定,一般不需要,你的nullpoint是页面的值没进action,导致这样的原因肯能是:
1、arrangeduty的getter和setter方法可写了
2、页面标签name可跟arrangeduty匹配上了
無名VF 2009-04-30
  • 打赏
  • 举报
回复
如果代码中用到那个类的话应该必须要先实例化后才能调用 否则就会抛空指针异常
你同事用第一种方法不报错 不知道在代码中有没有调用arrangeduty 如果没调用那应该就不报错 如果调用了 你可以看看他配置的XML 是不是在XML注入了那个类...

50,531

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧