在有一个 custprofileview
显示包含客户所有详细信息的 JSP 页面的操作中,并且在我的 JSP 中,所有字段都像我的
<s:textfield name="custprofileVO.email" value="%{custprofileVO.email}" />
<s:textfield name="custprofileVO.phone" value="%{custprofileVO.phone}" />
并这样做,并且有一个调用 Action 的提交按钮updatecustprofile
。
在updatecustprofile
行动中,我没有直接映射属性,而是有一个 private CustprofileVO custprofileVO;
带有 setter 和 getter 的成员变量。
在CustprofileVO
Class 中,我有类似的字段email
,phone
以及所有其他字段及其 setter 和 getter 方法。
问题是:在updatecustprofile
行动中,我正在实现Prepareable
接口,在prepare()
方法的实现中,我拥有custprofileVO.setDefaultID("Select");
并设置了另外 4 个字段,但是当我通过单击提交按钮运行程序时,我进入NPE
了第一行,即custprofileVO.setDefaultID("Select");
看起来框架没有实例化 CustprofileVO custprofileVO
。custprofileVO
如果我在该字段的设置上方手动实例化 (通过这样做custprofileVO = new CustprofileVO()
它可以工作。问题是 - 理想情况下 struts2 框架应该给我它没有做的实例,想了解原因。
此外,如果我在准备方法中手动设置 custprofileVO
它可以工作,但我也使用 XML 应用验证,其中我的字段名称是 custprofileVO.email
,它的验证然后 是custprofileVO.phone
它的验证。
当我尝试通过单击提交按钮验证运行时进行验证,但在屏幕上我看到所有字段的消息,因为所有文本框中的数据都被清空了。
为什么数据被删除?