struts2通过validetor验证可以直接生成js验证。struts1就没试过了。
解决方案 »
- 关于java序列化问题
- The server encountered an internal error () that prevented it from fulfilling
- struts2+Spring3+Ibatis3的困惑 求解!
- Hibernate session线程安全问题
- tomcat reloadable问题
- weblogic 对同一个工程如何发布两次!!??????
- jdom怎样获取XML根节点下一节点?
- spring mvc
- 怎样在数据库中存一棵树
- hibernate 查询HQL语句的写法(在线.....)
- oracle 查询当前游标
- 用visio如何将数据库的各个表生成对应的java类啊?急啊!
严重: Servlet.service() for servlet jsp threw exception
org.apache.jasper.JasperException: /form/login.jsp(10,2) Attribute name invalid for tag form according to TLD
at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:236)
at org.apache.jasper.compiler.Validator$ValidateVisitor.checkXmlAttributes(Validator.java:1198)
at org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:819)
at org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1507)
at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2338)
at org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2388)
at org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2394)
at org.apache.jasper.compiler.Node$Root.accept(Node.java:489)
at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2338)
at org.apache.jasper.compiler.Validator.validate(Validator.java:1737)
at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:178)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:306)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:286)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:273)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:566)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%> <html>
<head>
<title>JSP for RegForm form </title>
</head>
<body> 这里的form是不能指定name的,struts会根据action对应的formbean为该表单起名字
<html:form name="form" action="/reg" onSubmit="return check();">
username : <html:text property="username" name="username" />
<html:errors property="username" />
<br />
password : <html:password property="password" name="password" />
<html:errors property="password" />
<br />
cpassword : <html:password property="cpassword" name="cpassword" />
<html:errors property="cpassword" />
<br />
name : <html:text property="name" name="name" />
<html:errors property="name" />
<br />
ID : <html:text property="ID" />
<html:errors property="ID" />
<br />
<html:submit />
<html:cancel />
</html:form>
</body>
</html>
<script language="javascript" type="text/javascript">
function check() {
if (document.forms[0].username.value == "") {
alert("用户名不能为空");
return false;
}
if (document.form.password.value != document.form.cpassword.value) {
alert("密码不一致");
return false;
}
if (document.form.name.value == "") {
alert("名字不能为空");
return false;
} else {
return true;
}
}
</script>
<action attribute="regForm" input="/user/reg.jsp" name="regForm"
path="/reg" scope="request"
type="org.springframework.web.struts.DelegatingActionProxy">
<forward name="ok" path="/ok.jsp" />
<forward name="fail" path="/msg.jsp" />
</action>
贴个地址,webwork中关于validator验证的资料,运用其支持的拦截器,会自动生成js验证。
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%> <html>
<head>
<title>JSP for RegForm form </title>
</head>
<body>
<html:form action="/reg" onSubmit="return check();">
username : <html:text property="username" name="username" />
<html:errors property="username" />
<br />
password : <html:password property="password" name="password" />
<html:errors property="password" />
<br />
cpassword : <html:password property="cpassword" name="cpassword" />
<html:errors property="cpassword" />
<br />
name : <html:text property="name" name="name" />
<html:errors property="name" />
<br />
ID : <html:text property="ID" />
<html:errors property="ID" />
<br />
<html:submit />
<html:cancel />
</html:form>
</body>
</html>
<script language="javascript" type="text/javascript">
function check() {
if (document.getElementsByName("regForm.username")[0].value == "") {
alert("用户名不能为空");
return false;
}
if (document.getElementsByName("regForm.password")[0].value != document.getElementsByName("regForm.cpassword")[0].value) {
alert("密码不一致");
return false;
}
if (document.getElementsByName("regForm.name")[0].value == "") {
alert("名字不能为空");
return false;
} else {
return true;
}
}
</script>
alert("用户名不能为空");
return false;
}
<html:form name="form" action="/reg" onSubmit="return check();">
提示你标签属性不匹配,你仔细检查可知,<html:form>标签中name属性是错误的,因为,系统会根据你的action
配置自动找到它所匹配的form的。再者:错误显示:
at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:236)
错误提示你,你的错误虽然用<html:errors>抛出,如
<html:errors property="username" />
但在你的.properties文件中是否设置了你所抛出的错误
还有系统提示你错误的转向,你检查一下在你的action配置中,转向是否正确,或转向的文件是否存在?
3,4楼朋友说的用验证框架这是个不错的处理方法,你现在在js页面中用javascript来验证,安全性不好,而且不够灵活,struts提供的validator就是解决这个问题的好方法,楼主可以找本书看一下。当然你也可以在form中使用validate()方法对数据进行判断,很多种,楼主自己选择。其实在遇到这么多错误是一定要把系统提示你的错误检查一下,高清楚是哪儿的问题,单词不会可以查,这是个很好的学习方法,解决一个问题后再运行一下,看相关的错误是否也解决了,知道运行正确为止这里我也只能把前几个错误提示帮楼主解释一下,下面还有好多,比如对中文处理问题,楼主没有做好,希望楼主好好看看,楼上朋友只是解决了一至两个问题,还需要楼主自己啊!加油!
非常感谢14楼,
11楼的方法还是有不对的地方onSubmit也不能用。
ActionErrors erros = new ActionErrors();
if (use == null || "".equals(use)) {
erros.add("uid",new ActionMessage("is not null !", false));
}如果是这样设置 还用到.properties国际化转换文件中编辑错误提示吗?
这点搞不明白 但界面没反馈错误提示