类型转换器
局部类型转换器 对某个Action
全局类型转换器 所有Action的某个类型起作用
com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter;
public class DateTypeConverter extends DefaultTypeConverter{
public Object convertValue(Map<String,Object> context,Object value, Class toType)
{
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
try
{
if(tpType==Date.Class){//当字符串向Date雷翔转换时
String[] params=(String[]) Value; //Request.getParameterValues()
}
}
return super.convertValue(context,Value,toType);
}
}
HelloWorldAction-conversion.properties
局部类型转换器:
第一步:定义一个类型转换器 继承这个类DefaultTypeCOnverter后重写这个方法
第二部:注册 仅仅对Action中的属性进行转换就注册一个局部类型转换器 取名规则 要转换的Action的类名加-conversion.properties固定写法
内容当然是固定的属性类型 如Action中的属性 private Date birthday; 那么属性文件中就 birthday=cn.itcast.type.converter.DateTypeConverter 即包名.类名
全局类型转换器:
第一步:定义一个类型转换器
在WEB-INF/classes下放置xwork-conversion.properties文件.
文件中的内容为:
待转换的类型=类型转换器的全类名
===========================================================================================================
访问或添加request/session/application属性
ActionContext ctx = ActionContext.getContext();
ctx.getApplication().put("app","应用范围");//往ServletContext里放入app
ctx.getSession().put("ses","session范围");//往session里放入ses
ctx.put("req","request范围");//往request里放入req
ctx.put("names",Arrays.asList("老张","老黎","老方"));
return "message";
HttpServletRequest request = ServletActionContext.getRequest();
ServletContext servletContext = ServletActionContext.getServletContext();
request.setAttribute("req","请求范围属性");
request.getSession().setAttribute("ses","会话范围属性");
servletContext.setAttribute("app","应用范围属性");
前台页面取值
${applicationScope.app}
${sessionScope.ses}
${requestScope.req}
获取HttpServletRequest / HttpSession /ServletContext/ HttpServletResponse对象
方法一:通过ServletActionContext类直接获取
方法二:实现指定接口,有struts框架运行时注入:
在学习一下 如何加JSTL标签 Jar包
在下载的opensoftlib文件下struts-1.3.8-lib下找jstl.jar和standard.jar版本是1.1版本拷贝到项目的lib下
在页面上引入JSTL标签 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>1.1版本
页面呈现的迭代方式
<c:forEach items="${names}" var="name">
${name} <br/>
</c:froEach>
ognl标签可以不学习 但是表单标签要做数据回显通过EL表达式也可以做 主要还是学习表单标签