一,经常出现的错误
产生的错误1:
Cannot retrieve mapping for action: "/"
是使用:<html:form>标签 ,使用html:form时,action属性必须在struts-config.xml
文件中,由对应的action的映射<action path-="/">
<html:form>标签中的action属性必需存在,并且值不能为""
产生的错误2:
Form bean not specified on mapping for action: "empSave.do"
只用使用<html:form>标签,
struts-config.xml文件中<action path="">标签中的name属性必须要有对应的值
二,struts标签和html标签的对照关系
<html:form>:
源代码:
<!-- 该标签没有name属性 正常的,他使用action标签中attriute属性的值作为转化后name属性的值 -->
<html:form action="empSave.do" >
转化后的代码:
<form name="empForm" method="post" action="/itcast0115StrutsHtmlTaglib/empSave.do">
<html:text>:
源代码:
<html:text property="name"/>
在解析的过程中:获取在actionForm中查找name属性的值,由显示,没有不显示
转化后的代码中value的取值流程:
如果在<html:text property="name" value="eeeee"/>标签中直接设置值
results.append("eeeee");
如果在<html:text property="name"/>标签中没有直接设置值
如没有指定作用域:
pageContext.findAttribute("xxxx")
如果指定作用域
pageContext.getAttribute(name, 作用域的名称);
上面从作用域中获取的值是actionForm类型,调用get方法获取ActionForm中属性的值
其他的是""
转化后的代码: name属性的值就是 <html:text>中property属性的值
<input type="text" name="name" value="">
<html:password>
源代码:
<html:password property="psw" />
转化后的代码:
<input type="password" name="psw" value="">
错误:
No getter method for property: "name" of bean: "cn.itcast.struts.form.EmpForm"
原因:
actionForm中没有 与<html;text property="">对应的属性,
没有get方法(获取属性值的方法)
<html:textarea>
源代码:
<html:textarea property="des" rows="10" cols="20" value="1234" />
转化后的代码:
<textarea name="des" cols="20" rows="10">1234</textarea>
<html:radio>
源代码:
<html:radio property="sex" value="男"/>男
转化后的代码:
<input type="radio" name="sex" value="男">男
<html:checkbox>
源代码:
<html:checkbox property="love" value="不打游戏"/>不打游戏
转化后的代码:
<input type="checkbox" name="love" value="不打游戏">不打游戏
<html:checkbox>
源代码:
<html:select property="job">
<html:option value="模特">模特</html:option>
<html:option value="java程序员">java程序员</html:option>
<html:option value="软件工程师">软件工程师</html:option>
<html:option value="导游">导游</html:option>
</html:select>
转化后的代码
<select name="job"><option value="模特">模特</option>
<option value="java程序员">java程序员</option>
<option value="软件工程师">软件工程师</option>
<option value="导游">导游</option></select>
</td>
<html:submit>
<html:reset>
源代码:
<html:submit value="保存1" >保存</html:submit>
<html:reset value="重置"></html:reset>
转化后的代码
<input type="submit" value="保存1">
<input type="reset" value="重置">
三,乱码的解决方法
使用过滤器(处理字符编码的过滤器)
重写ActionServlet
学习总结:老师说struts标签最大的作用就是用于表单的回写。如果不用struts表单的回写要写很多东西