这两天学习了一下SSH,将遇到的问题记录一下。
1、Struts
动态ActionForm,DynaActionForm的好处在于不用自己写ActionForm类这些setter()、getter()方法。使用DynaActionForm只需修改之前的struts-config.xml和利用Action获得jsp页面输入的信息。
2、Struts
jsp页面无法获得action处理的结果。jsp页面:<s:property value="result"/>,无法显示,原因是calActoin里的私有成员result没有setter() getter()方法。这样即使calActoin里面即使给result赋值了,jsp页面也无法通过getter()方法得到result的值(个人理解不知对不对)。
3、Spring
jsp页面输入的参数并没有传递到action里面。原因是jsp的form里面参数的name同action里处理的成员name不一致造成的。
4、Hibernate
actoin处理的结果没有办法在jsp页面显示。这个程序不是从jsp页面提交的,而是直接在action里面处理结束后将结果在jsp页面显示。显示的错误信息:No result defined for action yao.actions.MapAction and result success。这个错误真是花费了好长时间,网上多数说是因为strtuts-config.xml文件里没有配置action的result属性,或者是result的name属性和action返回的不一致或者action的name属性与struts内部命名冲突之类的。
<action name="map" class="yao.actions.MapAction">
<result name="success">/map.jsp</result>
</action>
觉得自己的不是这个错误,也试图改过action的name属性的值,可是还是同样的错误。debug的时候action里面一切运行正常,只是最后return "success"; 的时候action返回的结果"success"能够得到,但是result的一直是null。错误也就定位在配置文件,最后在同学的帮助下在web.xml里面找到的。
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
之前是过滤所有的即<url-pattern>/*</url-pattern>。修改之后是只过虑aciton,之前的范围更广具体为什么错,也还没搞明白。