今天完成了这个项目的第二个部分,本部分基本功能是:
1。 实现分页查询,在标题头显示上下页按钮和每7页显示在一起(
这个功能基本实现了,就后半部分没有实现,换车,下拉菜单来实现。dao层用hibernate来实现,
hibernate实现分页查询为:Query中的方法:setFirstResults()开始位置,从0开始setMaxResults()步进长度.
2. 实现删除功能,包括单个删除和批量删除。
功能实现:
(1)基本思路为:在每条信息前面都个选择按钮,点击选择就表示要删除此条信息。当点击删除按钮时,会吧选择的信息的id直接提交表单,操作dao执行删除。
(2)具体实现:把id缓存到一个Integer[] 中,执行批量删除.使用<html:form action="">
............
<html:multibox property="id" value="${id}"/>
.....
</html:form>
把这个id数组缓存在form中,form中的代码为
private Integer[] id;
private Integer[] getId(){
return this.id;
}
private void setId(Integer[] id){
this.id=id;}
(3)过程中可能出现的问题:
a:在action方法中,form必须强制转换,且使用<html:form .... 时form是自动填充的,如果form没有事先写好下运行页面会出现异常,form中缓存的属性必须从form中读取,在request中读取不出,会出现空指针异常。
b:<html:....>标签功能很强大,本人还不是很了解。
3.实现添加项目的功能,要求:表单的内容为:项目编号,项目名称,开始日期,结束日期。
(1)实现服务器和客服端双向验证功能,客服端用JavaScript来实现,服务器用ValidatorForm来验证。
(2)具体实现为:
a。首先在struts-config.xml配置 为
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames" value="/WEB-INF/validator-rules.xml, /WEB-INF/validation.xml" />
</plug-in>
在资源文件中应该说需要显示的错误提示。
action中的配置<action path="/add" type="org.whatisjava.action.AddAction" name="userForm" attribute="uf" validate="true" input="/WEB-INF/jsp/form.jsp" />
属性validate表示是否需要验证,默认下为FALSE,不需要验证,input为错误提示应显示在什么地址。
-----》
validation.xml中的配置:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE form-validation (View Source for full doctype...)>
<!--name中的填写决定于form继承与谁,如果是ValidatorForm 就填attribute的内容
如果是ValidatorActionForm就填写 action的path-->
-
<field property="name" depends="required,mask">
<arg key="jsp.user.name" position="0" />
<arg key="jsp.user.name.format" position="1" />
<var-name>mask</var-name>
<var-value>^[a-z]{2}[0-9]{3}$</var-value>
</var>
</field>
-
<field property="pwd" depends="required,minlength">
<arg key="jsp.user.pwd" position="0" />
<arg key="jsp.user.pwd.minlength" position="1" />
<var-name>minlength</var-name>
</var>
</field>
</form>
</formset>
</form-validation>
以上配置文件只是个简单的事例。
对其中的开始日期要比计算日期要来的早,没有实现,在validate-rules.xml有找到date的验证,但在form中对于表单的读取只能是String类型而不能自动把String类型转化为Date类型,所以对于这个功能在服务器这端,本人还无法实现.