Struts1.x_all_main

(Struts1.x版本的文本)

Struts1.x的使用拓展
struts1.x的标签使用:

1.我们可以通过strut框架提供的<html:...格式的标签来绑定数据
*. <html:form action="/login" method="post" onsubmit="return check(this)">
其中 action的值要和struts主配置文件中 处理该请求的path属性值一致,
同时表单同样可以进行Javascript验证
function check(obj)
{
var uname=obj.elements['user.uname'].value;
........
}
2.通过<bean:message key="zf.login.button"/>来输出资源文件中的信息
3.通过<html:errors property="pass_error"/>输出错误提示信息
4.通过<html:errors/>输出错误容器中的所有错误信息
5.<html:hidden property="operate" value="toList"/>相当于<input type="hidden" name="operate" value="toList"/>
6.<html:submit value="查询" styleClass="mouseoverstyle"......、>通过styleClass属性来调用类级别样式
7.<%-- 定义页面变量fwList
    <bean:define id="fwList" type="java.util.List" name="fwxxList" scope="requst"/>
    id属性: 相当于声明一个名叫fwList的变量
    type属性:表示该变量的类型
    name属性:表示域中的对象名
    scope属性:表示将变量保存的域范围
    共找到<%=fwList.size() %>
  --%>
8.通过<bean:size id="count" name="fwxxList"/>获取域中名为fwxxList集合的大小,并赋给count变量
    共找到${ count}
9.<logic:notEmpty name="currentUser" scope="session">
*.表示在session范围内,查找名字为user的属性,如果找到了,而且值不为null,则执行logic:notEmpty标签内的内容
10.<logic:equal name="fwxx" property="uid" value="${sessionScope.currentUser.uid}" >.....</logic:equal>
*.表示域中fwxx代表的对象的uid属性是否与value值相等,如果相等则执行logic:equal标签中的内容
11.<bean:write name="fwxx" property="zj" format="#,###.##"/>格式化输出
12. <logic:iterate id="fwxx" name="fwxxList">....</logic:iterate>
*.表示通过id属性指定的变量循环遍历name属性所指定的集合
13.<html:select property="condition.qxid">
    <html:optionsCollection value="qxid" label="qx" name="qxList"/>
  </html:select>
  *.property="condition.qxid"表示将下列框选中值赋给formBean中condition实体对象的qxid
  *.<html:optionsCollection value="qxid" label="qx" name="qxList"/>
  *.其中html:optionsCollection用来绑定集合
  *.label="qx"表示将qxList集合中实体对象的qx属性作为呈现文本
  *.label="qxid"表示将实体对象的qxid属性作为呈现文本
  *.value="qxid"表示将实体对象的qxid属性作为下拉框选项的值

关于struts1.x中的过滤器,插件(数据类型转换),国际化的整理:
在项目的配置文件(struts-config.xml)中要添加的配置信息:
<controller processorClass="controller.CharacterController"></controller>     
    <message-resources parameter="MessageResources" />
   
<plug-in className="plugin.DateConvertPlugIn"></plug-in>

注意:在web.xml文件中 <load-on-startup>2</load-on-startup> 数值大于0表示在初始化时就读取全部配置!
一:控制器  
之——自定义过滤器:(相当于普通项目中的filter)
1, 关于控制器(之过滤器)的配置必须写在<message-resources>的后面,否则会报错!
<controller processorClass="controller.CharacterController"></controller> 
    processorClass属性指定相应的定义控制器的全类名
2, 控制器之过滤器类继承自RequestProcessor类,重写processPreprocess()方法(@Override)

public class CharacterController extends RequestProcessor {
@Override
protected boolean processPreprocess(HttpServletRequest request, HttpServletResponse response) {
// TODO Auto-generated method stub

System.out.println("struts 控制器已经加入");

try {
request.setCharacterEncoding("gb2312");
response.setCharacterEncoding("gb2312");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return super.processPreprocess(request, response);
}
}

二,插件:
(自定义数据类型转换的插件——往actionForm中封装的数据类型为引用数据类型)
1,配置:<plug-in className="plugin.DateConvertPlugIn"></plug-in>
className属性指定实现插件类的全类名
2,插件类实现PlugIn接口,在init()中进行相关操作。
public class DateConvertPlugIn implements PlugIn {

public void destroy() {
// TODO Auto-generated method stub

}

public void init(ActionServlet servlet, ModuleConfig config)
throws ServletException {
System.out.println("日期转换器开始工作。。。");
ConvertUtils.register(new UtilDateConvter(), java.util.Date.class);

}
}
3,实现了插件的数据转换功能的类,实现Converter接口
(根据所需要添加的插件的功能去实现相应功能的接口,如,这里添加的插件是为了进行数据类型转换,故而实现了Converter接口)
public class UtilDateConvter implements Converter {

public Object convert(Class arg0, Object text) {
// TODO Auto-generated method stub
Date date=null;

if(text==null)
return (null);
if(text instanceof Date)
return text;
if(text instanceof String)
{

SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:SS");
try {
date= sdf.parse((String)text);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return date;
}

}


三,国际化:
1, 为使用国际化而往工具中添加国际话的相应插件的步骤:
a) 将插件文件夹plugins拷到工具的目录下
b) 将configuration 中的文件全部删除只留下一个config.ini(配置设置文件)

2, 具体操作:
a) 国际化文件(MessageResources.properties)名以.properties结尾,名称以配置文件
<message-resources parameter="MessageResources" />中的parameter属性开始以“_”连接相应的语言标识(默认文件不加)
b)在静态页面中需要使用struts的bean标签(<bean:message key="login.uname"/>),使用taglib指令引入相应的标签支持(相应的错误提示需要引入html标签)
c)  在<bean:message key="login.uname"/>中,用key指定要使用的静态内容对应的文件中key的全名(错误提示使用<html:errors/>,通过<html:errors property="password_error"/>中的property指定error名称)
<body>
  <html:errors/>
    <form action="users.do" method="post" name="myform">
    用户ID:<input type="text" name="users.uid"/><br/>
    <bean:message key="login.uname"/><input type="text" name="users.uname"/><br/>
    <bean:message key="login.upass"/><input type="text" name="users.upass"/>
<html:errors property="password_error"/><br/>
    登录时间:<input type="text" name="users.loginTime" /><br/>
    <input type="hidden" name="method" value="dologin"/>
    <input type="submit" value='<bean:message key="login.submit"/>'/>
    </form>
  </body>
3,关于国际化中的报错机制:

要实现error错误处理,根据需要在,配置文件中配置或程序中编码控制:
a)在国际化文件中配置:login.upass.error = The Length of password must be 3
b),在程序中代码控制:
error继承自ActionMessages,是错误信息的管理容器
往容器中添加错误信息:errors.add(String name, ActionMessage arg0);
errors.add("login_error", new ActionMessage("login.fail")); super.addErrors(request, errors);//将错误信息存储在域中。
b) 关联关系:

Name属性用来关联.properties文件中的key(new ActionMessage("login.fail"))
(name对应<html:errors property="password_error"/> 中的property,什么都不写,为全部信息,写了,就是某个信息)


代码:

页面中:
<html:errors/>
<html:errors property="password_error"/>

类中:
ActionMessages errors=new ActionMessages();//实例化错误信息管理容器
if(users.getUpass().length()<=3)
{
errors.add("password_error", new ActionMessage("login.upass.error"));//往容器中添加错误信息
}

if(!users.getUname().equals("admin") || !users.getUpass().equals("accp"))
{
errors.add("login_error", new ActionMessage("login.fail"));
}


if(errors.isEmpty())
{
return mapping.findForward("success");
}
super.addErrors(request, errors);
return mapping.findForward("fail");

错误提示机制的理解:
ActionMessages errors=new ActionMessages();//实例化错误信息管理容器
errors.add(String name, ActionMessage arg0);//使用容器关联error 和.properties
super.addErrors(request, errors);//存储

在页面中通过<html:errors/>
<html:errors property="password_error"/>来获得错误信息,是通过property关联到java类中的ActionMessages容器,该容器将每一个property指定一个.properties文件中的key通过new的方式加载


你可能感兴趣的:(JavaScript,bean,struts,项目管理,配置管理)