在一个custprofileview
动作中显示一个JSP页面,其中包含客户的所有详细信息,在我的JSP中,所有字段都像我的
<s:textfield name="custprofileVO.email" value="%{custprofileVO.email}" />
<s:textfield name="custprofileVO.phone" value="%{custprofileVO.phone}" />
并执行此操作,并且有一个提交按钮,可以调用操作updatecustprofile
。
在updatecustprofile
Action中,我没有直接映射属性,而是有一个成员变量private CustprofileVO custprofileVO;
与二传手和吸气鬼。
在CustprofileVO
课程中,我有email
,phone
等字段以及所有其他字段及其setter和getters方法。
问题:在updatecustprofile
操作中我正在实施Prepareable
接口,在实施prepare()
方法时,我有custprofileVO.setDefaultID("Select");
并设置4更多字段但是当我通过点击提交按钮运行程序时,我会在NPE
的第一行显示custprofileVO.setDefaultID("Select");
看起来框架没有实例化CustprofileVO custprofileVO
。如果我在字段设置之上手动实例化custprofileVO
(通过执行custprofileVO = new CustprofileVO()
,那么它可以正常工作。
问题是 - 理想情况下struts2框架应该给我一个它没有做的实例,想了解原因。
此外,如果我在prepare方法中手动设置custprofileVO
它可以工作,但我还使用XML进行验证,其中我的字段名称为custprofileVO.email
,其验证然后custprofileVO.phone
验证。
当我尝试验证点击提交按钮验证时,但是在屏幕上我会看到所有字段的消息,因为所有文本框中的数据都会被删除。
为什么要删除数据?
答案 0 :(得分:0)
您不应该自己实例化来自JSP的对象。
要使用prepare()
方法进行操作,请先Prepare Interceptor
Param Interceptor
,you need to use a special stack: {{1} }} 强>
paramsPrepareParamsStack