1、关于表单校验配置文件的正确使用。
(1)JSP设置
a、 action中只写请求action的名字,不写.action后缀。
如:<s:form action="addCompany">
如果有.action后缀,则不生成客户端校验
b、 请求的action名称一般和实现方法同名
如:<action name="addCompany" method="addCompany" class="companyAction">
c、表单的validate属性设置为true
<s:form action="addCompany" validate="true">
(2)XML配置文件
a、命名格式
如果Action只有默认的execute()处理方法,命名格式为:ActionName-validation.xml
如:CompanyAction-validation.xml
如果请求的action只是Action处理类的某个方法,命名格式为:ActionName-methodName-validation.xml
如:CompanyAction-addCompany-validation.xml
b、存储路径
与相应的Action存放路径相同。
c、如果配置不能满足校验,可以在action中启用validate验证方法。如:
public void validateAddEducation() {
// 判断日期输入格式是否正确
String dateStar = "";
String dateS = "";
if (education.getStartDate() != null) {
dateStar = DateUtils.formatDate(education.getStartDate());
if (dateStar.equals(Constant.DATE_FOMART_ERROR_DEFAULT)) {
addFieldError("education.startDate", "开始日期格式输入有误!格式“yyyy-MM”");
education.setStartDate(null);
}
}
......
// 判断是否有错误信息
if (hasFieldErrors()) {
// 获取教育类型下拉列表信息
if (educationSelectItemInfos == null) {
educationSelectItemInfos = educationBaseModel.getTypeInfos();
}
}
}
2、服务端校验失败,返回请求页面时页面默认值的获取问题?
分析:服务端校验失败,返回请求页面的设置:如果设置页面,则带下拉列表等初始信息全部丢失;如果设置为action,则请求错误信息全部丢失。
解决方法一:(推荐使用)
采用相应action中的public void validateActionName() {}方法,在方法中获取将要显示的参数即可。
public void validateAddEducation() {
// 判断是否有错误信息
if (hasFieldErrors()) {
// 获取教育类型下拉列表信息
//只要先判断存在与否,再确定是否查询,否则在iso-8859-1字符集数据库的相关中文数据会被更新为乱码的。
if (educationSelectItemInfos == null) {
educationSelectItemInfos = educationBaseModel.getTypeInfos();
}
}
}
方法二:初始信息在加载时动态生成
a、调用Ajax技术(可行)
b、使用s:action标签来显示下拉列表(Map返回值解析出现异常)
<s:action name="showEducationSelect" id="eduSelect" ></s:action>
<s:select label="教育类别" list="#eduSelect.educationSelectItemMap"
name="statusId" listKey="key" listValue="value"
emptyOption="false" />
c、使用s:action标签来显示下拉列表(List返回值显示不出下拉信息)
<s:action name="showEducationSelect" id="eduSelect" ></s:action>
<s:select label="教育类别" list="#eduSelect.educationSelectItemList"
name="statusId" listKey="id" listValue="status.statusDesc"
emptyOption="false" />
3、关于校验相关的几个问题
A、Struts2的数据校验问题:在s:datetimepicker录入框为空时,校验起作用,
但再次输入字符后,总提交不成功,报输入为空的校验错误。此时访问其它action,报以下异常
No result defined for action ....action.CompanyAction and result input - action - file:/D:/apache-tomcat-5.5.23/.../struts-company.xml:11:26
经过分析发现,spring配置文件配置bean时缺少设置范围属性,更改为如下
<bean name="companyAction" class="....action.CompanyAction" scope="request"/>
即可顺利提交,异常同时消失。 当为prototype时,也可以顺利提交,根据项目综合比较采用 request。
bean属性scope的选取(prototype、request、session、global session),详见Spring总结部分。
B、日期类型的不能使用requiredstring值,否则不能提交。
<field-validator type="required">
<message>成立日期不能为空</message>
</field-validator>
C、怎样用正则表达式对文本输入框的不输入字符作判断?
没有找到合适的,只好先用(\s)?代替了。(\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]。 )
增加(\s)?后,正则表达式会在服务器端进行。
4、Struts2+Spring中的配置问题
A、依赖注入配置文件:不能配置相同的实体名称,如果相同,即使包名不同,也会不能正常加载。
B、struts.xml相关配置文件:包名的设置,在一个项目中不允许有相同的包名。
5、中文乱码问题
(1)在web.xml中配置以下信息,并且配置在struts2的所有过滤器之前。这样页面通过Button提交请求,中文没有问题。
<!-- Character Encoding filter -->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
(2)通过Url提交,中文乱码的处理
a、在tomcat的server.xml文件中设置URIEncoding="UTF-8"信息。如:
<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8"/>
b、如果是在java中生成url信息,则对中问参数进行处理。
如:java.net.URLEncoder.encode(employeeName, "UTF-8") employeeName为中文参数
c、如果在js中生成url信息,对中问参数进行处理。(js的encodeURIComponent()函数)
如:var url="findJobsByJobName.action?nameParameter="+encodeURIComponent(value);
6、Struts.xml配置文件中的参数传递
参考:
http://wiki.javascud.org/display/ww2cndoc/Result+Types
(1)Redirect Action Result
方案一:使用标签配置。例
<package name="public" extends="webwork-default">
<action name="login" class="...">
<!-- Redirect to another namespace -->
<result type="redirect-action">
<param name="actionName">dashboard</param>
<param name="namespace">/secure</param>
</result>
</action>
</package>
<package name="secure" extends="webwork-default" namespace="/secure">
<-- Redirect to an action in the same namespace -->
<action name="dashboard" class="...">
<result>dashboard.jsp</result>
<result name="error" type="redirect-action>error</result>
</action>
<action name="error" class="...">
<result>error.jsp</result>
</action>
</package>
多个参数示例:
<result name="success" type="redirect-action">
<param name="actionName">generateBarcode</param>
<param name="namespace"></param>
<param name="getTichetSource">${getTichetSource}</param>
<param name="companyId">${companyId}</param>
<param name="serviceId">${serviceId}</param>
</result>
方案二:直接拼url字符串。例:
<result type="redirect-action">viewPost?postid=${postid}&prap=${prap}</result>
注 viewPost?postid=${postid} 不能写成 viewPost.action?postid=${postid}
使用"&"代替"&",原理和HTML中的转义相同。
(2)Redirect Result
方案一:使用标签配置。例
<action name="blahblahAction" class="blahAction" method="blah">
<result name="success" type="redirect">
<param name="location">/some.action?field1=${field1}&field2=${field2}</param>
<param name="parse">true</param>
</result>
</action>
因为type="reirect"的result只接受location和parse两个参数,不支持自定义的param,这是个限制。
location (默认) - action执行后跳转的地址.
parse - 默认为true. 如果设置为false, location参数不会被当作Ognl表达式解析.
方案二:直接拼url字符串。例:
<action name="blahblahAction" class="blahAction" method="blah">
<result name="success" type="redirect">/some.action?field1=${field1}&field2=${field2}</result>
</action>
使用"&"代替"&",原理和HTML中的转义相同。
7、怎样更改Struts2的表单css配置?
在struts-core-2.06.jar的包中包含了一些默认的模版文件,它们位于$ {struts-core-2.06.jar}/template下,其中有ajax,simple,xhtml等。
查看一下struts.properties,如果没有可以查看$ {struts-core-2.06.jar}/org/apache/struts2/default.properties文件,其中有如下配置:
struts.ui.theme=xhtml
struts.ui.templateDir=template
struts.ui.templateSuffix=ftl
这一段就是关于struts2模版的配置信息,我们可以修改struts.properties文件,将其改成
struts.ui.theme=mytheme
struts.ui.templateDir=template
struts.ui.templateSuffix=ftl
同时在"WebRoot/template/mytheme/"目录下建立相应的模板文件及其相关文件,文件内容参照更改css前的模板内容。
最后建立css样式文件,这样就更改了Struts2的表单css配置。
(参阅信息:
http://xianglg.iteye.com/blog/88171)
8、Struts2中类型转换器的应用
参阅:
http://aumy2008.iteye.com/admin/blogs/150202
9、Struts2中拦截器的应用
参阅:
http://aumy2008.iteye.com/admin/blogs/146952
分享到:
相关推荐
论坛系统项目(Struts 2+Hibernate+Spring实现)论坛系统项目(Struts 2+Hibernate+Spring实现)论坛系统项目(Struts 2+Hibernate+Spring实现)论坛系统项目(Struts 2+Hibernate+Spring实现)论坛系统项目(Struts...
"educationSelectItemInfos" executeResult="false" /> ...在实际项目中,还需要结合Hibernate进行持久层操作,以及Spring进行依赖注入和事务管理,共同构建出完整的SSH(Struts2 + Hibernate + Spring)企业级应用。
网络硬盘(Struts 2+Hibernate+Spring实现)网络硬盘(Struts 2+Hibernate+Spring实现)网络硬盘(Struts 2+Hibernate+Spring实现)网络硬盘(Struts 2+Hibernate+Spring实现)网络硬盘(Struts 2+Hibernate+Spring...
Struts 2、Hibernate 和 Spring 是 Java Web 开发中的三个重要框架,它们组合起来可以构建高效、可维护的Web应用程序,尤其是对于复杂的企业级论坛系统。这个基于Struts 2+Hibernate+Spring实现的论坛系统,充分利用...
公文管理、申请审批、公告管理、会议管理、权限管理、个人办公、客户管理、人事等等。项目技术:Struts1.2 + Hibernate3.0 + Spring2 +DWR。java毕业设计 jsp毕业设计 ssh毕业设计
毕业设计 基于SSH2新闻发布管理系统,使用Struts2+Hibernate4.2+Spring3等JavaWeb框架完成
Java Web整合开发实战--基于Struts 2+Hibernate+Spring.pdf 1章 Web的工作机制 2章 搭建Java Web开发环境 3章 JSP及其相关技术 2篇 表现层框架Struts技术 4章 Struts快速上手 5章 解密Struts之核心文件 6章 ...
【SSH 注解开发】是Java Web开发中一种常见的技术栈组合,由Struts2、Hibernate和Spring框架共同构建。这个学生信息管理系统就是基于这种技术栈,利用注解的方式来简化配置,提高开发效率。 Struts2作为MVC(模型-...
Struts2、Spring、Hibernate和MySql这四个技术是Java Web开发中常用的一套经典组合,被称为SSH框架。这个注册登录系统就是利用这些技术构建的。下面将详细讲解这套组合的相关知识点。 首先,Struts2是一个强大的MVC...
适合初学ssh 三大框架...这是刚学三大框架的时候做的一个小练习。是用myeclipse做的,导入一下,然后把数据库文件也导入一下,在apllicationcontex。xml文件中把数据库密码修改一下,我的是空,根据你的数据库修改一下
整合使用最新版本的三大框架(即Struts2、Spring4和Hibernate4),搭建项目架构原型。 项目架构原型:Struts2.3.16 + Spring4.1.1 + Hibernate4.3.6。 此外,还有:log4j、slf4j、junit4、ehcache等知识点。 项目...
一个简单的spring+struts2+hibernate+mybatis整合(数据库脚本放在项目资源文件的sql目录下) 因为没想好mvc用springmvc好,还是struts2好 所以没有整合进去
《JavaEE实用开发指南:基于Weblogic+EJB3+Struts2+Hibernate+Spring》-- part2/3
这个项目整合了三个关键的开源框架:Struts2、Hibernate和Spring,它们在Java Web开发中扮演着重要角色。 【Struts2】作为MVC(模型-视图-控制器)架构的框架,负责处理HTTP请求,控制应用程序流程,并将数据传递给...
【标题】:“全套源码-论坛系统(Struts 2+Hibernate+Spring实现)”揭示了一个基于Java技术栈开发的论坛系统,它整合了三个重要的框架:Struts 2、Hibernate和Spring。这个项目旨在提供一个完整的解决方案,帮助...
Struts2+Hibernate+Spring整合开发技术详解19章网上书店完整源码(内附数据库导出文件) 与书上最后一章内容完全对应 可以结合书上教程进行最后一章学习
毕业设计 基于SSH2商品进销存管理系统,使用Struts2+Hibernate4.2+Spring3等JavaWeb框架完成
毕业设计 基于SSH2高校协会管理系统,使用Struts2+Hibernate4.2+Spring3等JavaWeb框架完成高校协会管理系统
Struts 2+Hibernate+Spring整合开发技术详解sample.pdf
一个Struts2+Hibernate+Spring例题 一个Struts2+Hibernate+Spring例题 一个Struts2+Hibernate+Spring例题 一个Struts2+Hibernate+Spring例题 一个Struts2+Hibernate+Spring例题