about struts.devMode

1.
ognl.OgnlException: target is null for setProperty(null, "y", [Ljava.lang.String;@1d57c7)



     好像是我表单里面有多少个提交项后台就抛出多少对这样的异常信息。

     可是我的表单里面是没有X,Y这样的提交信息的。。。很是郁闷,而其在前期的开发中也出现过这样的异常,虽然后台抛出这样的异常,但是它不影响程序的正常运行,所以一直也就没管它。今天又苦苦寻觅了许久终于搞定了。。




原来,我提交表单的按钮是如下定义的:

<input type="image" name="Submit" value="提交" onclick="return checkpwd();" src="images/a_tj.gif"/>

只要标签里面的type="image"那么这个带图片的按钮就能提交表单,而且还能在图片上加汉字。原来以为是个好的发现。呵呵,但是今天却发现问题就处在它身上。

当我把提交的按钮换成如下定义:

<input type="submit" name="bu1" onclick="return checkpwd();"/>

好了,一切OK了。没有异常了。

上面的带图片的按钮是美工给的,因此在asp和php应该都没问题,主要是因为Struts2的问。

struts.xml文件里面有这么一个"struts.devMode"。当设为true时,html表单数据中有和action属性匹配不上的参数名时就会提示这样的信息。我试了一下,果然如此,因此在开发过程中将这个属性设为true还是不错的,可以帮我们发现一些可能出现的问题。

这个错误信息主要因为struts.devMode = true引起,因为使用struts在默认配置下对任何提交到action的参数强制需要setter方法,而我们在使用token的时候一般都没有正确的为每一个token设置该参数,为此提交的token信息就会在这里一起一些错误信息,如果需要屏蔽掉这些的话,可以设置webwork.devMode = false来避免这种错误信息的抛出,当然这些错误在程序调试的时候是有用处了,我们可以根据这些信息来删除不必要的参数

2.
如果不加
<constant name="struts.devMode" value="true" />
用http://localhost:8088/Struts2/hello可连到hello.jsp
加了就不行 为什么?
struts.xml文件如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
<constant name="struts.devMode" value="true" />
<package name="default" namespace="/" extends="struts-default">
  <action name="hello">
   <result>
    /Hello.jsp
   </result>
  </action>
</package>
</struts>

devMode模式是开发模式,开启它则默认开启了i18n.reload、configuration.xml.reload。这个错误是由于configuration.xml.reload设置为true倒导致的,网上的资料没有说明原因及解决办法,有人说这是216版本的BUG,tomcat的安装路径包含空格,可以使用更高级的版本来避免这个错误。

猜你喜欢

转载自xgbjmxn.iteye.com/blog/1102671
今日推荐