分享

Struts2.1.8版本的客户端输入校验的问题

 昵称2829056 2010-08-20

本文为本人(xingyu_liu)在crazyit上发表的问题,转载请注明

[Struts] Struts2.1.8版本的客户端输入校验的问题

Struts2.1.8版本的客户端输入校验的问题

先说一下我完成客户端校验已完成的部分:
①已经提供了一个LoginAction-login-validation.xml校验规则文件
②struts.xml配置文件中LoginAction类对应的action配置完全正确
③在index.jsp页面中有一个表单标签,其中的表单域标签在这里省略不谈了,
  这个表单标签在不使用客户端校验属性 validation="true",即之前采用
  服务器端校验时完全正确,发布并在FireFox里输入值都可以正确完成服务器
  端的校验

我的问题是:
网上有很多人问Struts2.1.8到底支不支持客户端校验?
就有一部分人说,2.1.8版本也是支持的,我在学习李刚的《Struts2.1权威指南》
时,书中也只是说在页面端的表单标签内使用validation=“true”就可以启用
客户端校验的功能。那为什么我按照我的步骤不能完成客户端校验?

还是贴上我使用struts2.1.8版本并在firefox浏览时报的错误吧:
Method public java.util.List org.apache.struts2.components.Form.getValidators(java.lang.String) threw an exception when invoked on org.apache.struts2.components.Form@18faef1 - Class: freemarker.ext.beans.SimpleMethodModel
File: SimpleMethodModel.java
Method: exec
Line: 130 - freemarker/ext/beans/SimpleMethodModel.java:130:-1
org.apache.struts2.components.UIBean.end(UIBean.java:515)
org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag(ComponentTagSupport.java:42)
org.apache.jsp.index_jsp._jspx_meth_s_005fform_005f0(index_jsp.java:143)
org.apache.jsp.index_jsp._jspService(index_jsp.java:80)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:88)


后面的一些异常就省略了,相信以上异常已经是很多人共同出现的问题了。



请问有Struts2.1.8的使用者成功完成过该版本的客户端校验功能吗?
如果该版本支持客户端校验,到底与Struts2.1.6版本有什么配置上的差别?
劳烦懂的人费点时间帮忙解决下这个版本的客户端输入校验的问题吧。

谢谢···


刚刚验证了一下:Struts 2.1.8.1完全支持客户端校验,没有任何问题。

如果你配置的Action所在的package没有指定namespace属性,那JSP页面中的<s:form.../>标签无需任何改变。
如果你配置的Action所在的package指定了namespace属性,那JSP页面中的<s:form.../>标签也需要指定namespace属性!

至于你的错误——这是一个很简单地错误。按下面方法即可解决:
不要直接访问你的JSP页面,为应用中所有页面都配置一个通用Action,例如:
复制内容到剪贴板
代码:
<action name="*">
    <result>{1}.jsp</result>
</action>
比如你要访问abc.jsp页面,你应该访问abc.action,或者省略.action后缀,直接访问abc也可以。
但不要直接访问abc.jsp。
生命没有假期!
如果生命只剩下最后一秒,你可会想到我?


谢谢站长的分享啊。。学习了
倚楼听风雨,笑看江湖路。。。


回复 2# kongyeeku 的帖子

先谢谢站长了,你的意思我明白了:
    不能直接通过xxx.jsp来使用struts的客户端校验,而应该通过一个action来跳转到需要使用客户端校验的页面。

我在struts.xml文件中配置了一个name=“index”的result,并指向实际视图资源index.jsp后,然后访问时使用index和index.action后,客户端校验功能已经可以正常使用了。



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多