如果把出问题的几个属性对应的文本框删掉,问题就没了,一切正常!其他属性碰到null值也没问题!

Form里有n个属性,字符串类型,属性对应的get/set方法用MyEclipse自动生成的,完全符合命名规范。页面上有n个文本框,对应form中的属性,字母大小写都正确。文本框的初始值由上个页面通过session传过来的,某些值可能为null。
由上个页面进入这个页面的时候问题就出现了,如果后四个属性的初始值为null,就会出现No getter method for property xxx ……的错误。如果把这四个属性的文本框删除,就没问题了,即使其他属性为空,也不会出错。
我就纳了闷儿了,同样是一个Form里的String类型的属性,差距他咋就这么大呢?大侠们帮帮忙吧!万分感激!
我做的是一个修改详细信息的页面。
大体代码:
我的ActionForm里就是n个属性和对应的getter/setter。
页面form:
<html:form action="/modify.do" method="post">
<% OldBean ob=(OldBean)session.getAttribute("oldBean");%>
<html:text property="pro1" value="<%=ob.getPro1()%>" />
<html:text property="pro2" value="<%=ob.getPro2()%>" />
……
<html:text property="proN" value="<%=ob.getProN()%>" />
<html:submit value="submit" property="submit" />
</html:form>
出问题的几个属性跟其他属性除了名不一样,其他都一样,名也是完全按照命名规范的,页面上的属性名是copy过去的,不会写错。

UYOU
浏览 135回答 2
2回答

jeck猫

我说的Form是你的XXXForm类,不是Form表单这四个属性的文本框&nbsp;原因可能是:&nbsp;1、这4个文本框你用struts标签写的<html:text ... />在Form里没有设为属性,&nbsp;2、你在Form里设成了属性,但是你没写成struts标签

湖上湖

例如有个ActionFormpubic MyForm extends ActionFomr{private long id;private String name;//对应的get,set方法。注意名称一定要规范}<html:form action="/modify.do" method="post">&nbsp;<html:text property="id"/>&nbsp;<html:text property="name"/>&nbsp;</html:form>你如果是想给form赋值,完全可以在action中直接给form设值,不用传到页面上。例如进入包含html:form的页面前,先经过action,从action给form赋值,action中有以下方法public ActionForward initForm(//参数省略){MyForm myform = (MyForm )form;myform.setId(111);myform.setName(”myName“);mapping.findForward("你配置了ActionFOrm的页面");}
打开App,查看更多内容
随时随地看视频慕课网APP