使用struts1应注意的几点

  1:formbean中定义了一个私有变量Varia,jsp页面中有一个标签元素对象的id=“Varia”,结果在action中进行数据填充或取值时报错的问题:


  以在action中进行取值为例:一般情况下都是通过form.getVaria() 这一句直接获取jsp页面中的id为varia的标签元素对象的value值。struts的工作原理是:根据getVaria()方法名,截取到get关键字后面的字符串Varia,然后将其第一个字母转为小写,即变成varia,然后去页面中寻找id=varia的标签对象。因此,如果我们要填充页面数据,form.setVaria("varia"),那么struts也会解析set方法名,截取其后面的字符串Varia,然后将该字符串第一个字母转为小写得到varia,然后去页面中寻找id=varia的标签对象,赋值。因此,jsp页面中的标签元素对象的id属性值的第一个字母必须小写。同时,在formbean中定义私有变量时,也要尽量遵循规范进行首字母小写,例如:private String varia是规范的,但private String Varia则是不规范的。


  不知道在struts2.x的工作原理是否相同?但想想应该也差不多吧。




  2:ActionForm中不能定义Date型的变量,因为jsp页面中的所有数据都是字符串型。这个问题曾经困扰了我整整半天的时间,当时是将一个字段放在表单里提交,结果表单死活不提交,也不显示到底是哪里的错。那个无语呀!

  3:在HTML页面中定义各个标签元素的name、id、property等属性时,千万不要与关键字雷同,否则,页面也是死活不执行。例如:我曾经做文件上传,在表单里这样写:<input type="file" name="file" property="file" contentEditAble="false" /> ,结果表单死活无法提交!最后将属性改为name=files property=files,表单这才变成个小乖乖。


  4:写js代码时,函数的命名也不能与关键字相冲突。我在做表单提交时,没有用type="submit"的按钮来提交,而是使用的普通的type="button"按钮来提交,是这样写的:<input type="button" value="提交" onclick="javascript: submit()" />,结果点击这个按钮,死活不执行submit()函数。后来经理一看,说submit是关键字,于是我将该函数名改为Submit(),就一切恢复正常了!




  5:如果在页面中使用了struts的标签,而struts标签中一般都会通过一个name属性来指向后台的一个formbean,此时,例如在页面中有这样一句:


  资源ID:<input type="text" name="rsrcId" value="<bean:write name='AdvSearch' property='rsrcId' />">

  这里有struts标签的<bean:write>标签,如果此时后台的name为 AdvSearch的formbean中尚未声明名为该标签的property属性所指向的值rsrcId的字段,则项目将无法运行。


你可能感兴趣的:(jsp,工作,struts)