- 浏览: 72131 次
- 性别:
- 来自: 北京
最新评论
-
a2397772:
...
关于java.lang.NoClassDefFoundError -
pudong:
路过。。。。
Activemq收发消息的目的地不一致的问题。 -
highriver:
我不清楚后者会不会连sql中的变量一并打印出来,jdbclog ...
单元测试中使用jdcblogger观察打印的sql -
▄︻┳═一:
log4j.logger.java.sql=DEBUG
也能 ...
单元测试中使用jdcblogger观察打印的sql -
legend:
liquidthinker 写道加密cookie?不太明白意图 ...
关于使用加密cookie取代session
在struts2中,我使用下面的方法请求。
通过Action!Method.action的方法实现了dispatchAction。现在的情况是action里的execute已经没有了。被若干个crud方法取代。
现在想使用@validations用来针对crud方法中的变量做校验.但是比如下面的action.
create方法上的红色字体表示create时的一个校验。但是当我执行另一个请求:role!search.action时,却会执行role!create.action方法。真的很奇怪。不知道是哪里配置的问题。
通过Action!Method.action的方法实现了dispatchAction。现在的情况是action里的execute已经没有了。被若干个crud方法取代。
现在想使用@validations用来针对crud方法中的变量做校验.但是比如下面的action.
package com.tongcard.merchant.web.actions.privilege; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import org.apache.struts2.config.Namespace; import org.apache.struts2.config.Result; import org.apache.struts2.config.Results; import org.apache.struts2.dispatcher.ServletRedirectResult; import com.opensymphony.xwork2.Action; import com.opensymphony.xwork2.validator.annotations.RequiredStringValidator; import com.opensymphony.xwork2.validator.annotations.Validation; import com.opensymphony.xwork2.validator.annotations.Validations; import com.opensymphony.xwork2.validator.annotations.ValidatorType; import com.tongcard.merchant.web.helper.BaseAction; import com.tongcard.merchant.web.helper.BusinessResult; import com.tongcard.merchant.web.helper.PageHelperList; import com.tongcard.merchant.web.manager.PrivilegeManager; import com.tongcard.merchant.web.manager.impl.PrivilegeManagerImpl; import com.tongcard.merchant.web.model.Role; import com.tongcard.merchant.web.model.User; @Namespace("/privilege") @Results( { @Result(name = "success", value = "/privilege/roleSearch.jsp"), @Result(name = "input", value = "/privilege/roleNew.jsp", type = ServletRedirectResult.class), @Result(name = "modify", value = "/privilege/roleModify.jsp"), @Result(name = "login", value = "/login/login.jsp") }) public class RoleAction extends BaseAction { /** * */ private static final long serialVersionUID = 1L; private static int pageSize = 5; private int currentPage = 1; private PageHelperList pageHelper; private Role role; private List<String> pages; private String actions; private String info; private String roleId; private List<Role> roles; private PrivilegeManager privilegeManager; [color=red]@Validations(requiredStrings = { @RequiredStringValidator(type = ValidatorType.SIMPLE, fieldName = "role.roleName", message = "角色名称不能为空") })[/color] public String create() { BusinessResult bres = null; role .setOrgCode(request.getSession().getAttribute("orgCode") .toString()); bres = privilegeManager.newRole(role); info = bres.getInfo(); return Action.INPUT; } // 分页查询得到当前管理员所在机构下的角色。 public List<Role> buildRoleDivPageData(HashMap<String, String> map) { List<Role> roles = null; int count = privilegeManager.countRole(map.get("orgCode")); if (count == 0) { return null; } pageHelper = new PageHelperList(count, currentPage, pageSize); map.put("begin", pageHelper.getPageStartRow() + ""); map.put("end", pageHelper.getPageEndRow() + ""); roles = privilegeManager.searchRoleByPage(map); pages = new ArrayList<String>(); for (int i = 0; i < pageHelper.getTotalPages(); i++) { pages.add(String.valueOf(i + 1)); } return roles; } public String search() { HashMap<String, String> map = new HashMap<String, String>(); User user = (User) (request.getSession().getAttribute("user")); if (null == user) { return "login"; } map.put("orgCode", user.getOrgCode()); roles = buildRoleDivPageData(map); return Action.SUCCESS; } public String show() { role = privilegeManager.searchSimpleRoleByRoleId(Long.valueOf(roleId)); return "modify"; } public String init() { return Action.INPUT; } // @Validations(requiredStrings = { @RequiredStringValidator(type // =ValidatorType.SIMPLE, fieldName = "role.roleName", message = "角色名称不能为空") // }) public String update() { BusinessResult bres = null; bres = privilegeManager.modifyRole(role); info = bres.getInfo(); request.setAttribute("role", role); return "modify"; } // 得到全部当前管理员所在机构下的角色 public List<Role> getRoles(String orgCode) { List<Role> list = null; list = privilegeManager.searchRolesByOrg(orgCode); return list; } public String getActions() { return actions; } public void setActions(String actions) { this.actions = actions; } public PrivilegeManager getPrivilegeManager() { return privilegeManager; } public void setPrivilegeManager(PrivilegeManagerImpl privilegeManager) { this.privilegeManager = privilegeManager; } public String getInfo() { return info; } public void setInfo(String info) { this.info = info; } public void setPrivilegeManager(PrivilegeManager privilegeManager) { this.privilegeManager = privilegeManager; } public Role getRole() { return role; } public void setRole(Role role) { this.role = role; } public List<String> getPages() { return pages; } public void setPages(List<String> pages) { this.pages = pages; } public static int getPageSize() { return pageSize; } public static void setPageSize(int pageSize) { RoleAction.pageSize = pageSize; } public int getCurrentPage() { return currentPage; } public void setCurrentPage(int currentPage) { this.currentPage = currentPage; } public PageHelperList getPageHelper() { return pageHelper; } public void setPageHelper(PageHelperList pageHelper) { this.pageHelper = pageHelper; } public String getRoleId() { return roleId; } public void setRoleId(String roleId) { this.roleId = roleId; } public List<Role> getRoles() { return roles; } public void setRoles(List<Role> roles) { this.roles = roles; } }
create方法上的红色字体表示create时的一个校验。但是当我执行另一个请求:role!search.action时,却会执行role!create.action方法。真的很奇怪。不知道是哪里配置的问题。
评论
10 楼
yangwu21
2008-04-02
加入拦截器:
<package name="sfc-default" extends="struts-default" abstract="true">
<interceptors>
<interceptor-stack name="defaultStack">
<interceptor-ref name="exception"/>
<interceptor-ref name="alias"/>
<interceptor-ref name="servletConfig"/>
<interceptor-ref name="prepare"/>
<interceptor-ref name="i18n"/>
<interceptor-ref name="chain"/>
<interceptor-ref name="debugging"/>
<interceptor-ref name="profiling"/>
<interceptor-ref name="scopedModelDriven"/>
<interceptor-ref name="modelDriven"/>
<interceptor-ref name="fileUpload"/>
<interceptor-ref name="checkbox"/>
<interceptor-ref name="staticParams"/>
<interceptor-ref name="params">
<param name="excludeParams">dojo\..*</param>
</interceptor-ref>
<interceptor-ref name="conversionError"/>
<interceptor-ref name="validation">
<param name="excludeMethods">input,back,cancel,browse</param>
<param name="validateAnnotatedMethodOnly">true</param>
</interceptor-ref>
<interceptor-ref name="workflow">
<param name="excludeMethods">input,back,cancel,browse</param>
</interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="defaultStack"/>
</package>
然后
在struts 配置文件里面加入:
<action name="save" class="organizationAction" method="save">
<interceptor-ref name="defaultStack"/>
<result name="input">../user/editOrganization.jsp </result>
<result name="success" type="redirect">list.action</result>
</action>
<package name="sfc-default" extends="struts-default" abstract="true">
<interceptors>
<interceptor-stack name="defaultStack">
<interceptor-ref name="exception"/>
<interceptor-ref name="alias"/>
<interceptor-ref name="servletConfig"/>
<interceptor-ref name="prepare"/>
<interceptor-ref name="i18n"/>
<interceptor-ref name="chain"/>
<interceptor-ref name="debugging"/>
<interceptor-ref name="profiling"/>
<interceptor-ref name="scopedModelDriven"/>
<interceptor-ref name="modelDriven"/>
<interceptor-ref name="fileUpload"/>
<interceptor-ref name="checkbox"/>
<interceptor-ref name="staticParams"/>
<interceptor-ref name="params">
<param name="excludeParams">dojo\..*</param>
</interceptor-ref>
<interceptor-ref name="conversionError"/>
<interceptor-ref name="validation">
<param name="excludeMethods">input,back,cancel,browse</param>
<param name="validateAnnotatedMethodOnly">true</param>
</interceptor-ref>
<interceptor-ref name="workflow">
<param name="excludeMethods">input,back,cancel,browse</param>
</interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="defaultStack"/>
</package>
然后
在struts 配置文件里面加入:
<action name="save" class="organizationAction" method="save">
<interceptor-ref name="defaultStack"/>
<result name="input">../user/editOrganization.jsp </result>
<result name="success" type="redirect">list.action</result>
</action>
9 楼
lerluc
2007-05-24
8 楼
lerluc
2007-05-24
除了public String input()
其他任何名字的方法都会validate
真拿它没办法
我就是不想写xml
其他任何名字的方法都会validate
真拿它没办法
我就是不想写xml
7 楼
highriver
2007-05-16
我最初有的,后来去了,不管用。它应该只是表明进行类级别的检验。
6 楼
lerluc
2007-05-15
写少了个括号,嘻嘻
@Validation()
加在public class RoleAction...头上
@Validation()
加在public class RoleAction...头上
5 楼
lerluc
2007-05-15
貌似你的class头上少了一个@Validation
http://struts.apache.org/2.0.6/docs/validation-annotation.html
http://struts.apache.org/2.0.6/docs/validation-annotation.html
4 楼
highriver
2007-05-14
这个是我后来找到的一个资料,大家看看就明白了。xly_971223 同志说的对,用配置文件可能好一些。
http://www.nabble.com/struts2-validation-for-only-one-method-in-action-tf3267302.html#a9083597
http://www.nabble.com/struts2-validation-for-only-one-method-in-action-tf3267302.html#a9083597
3 楼
xly_971223
2007-05-12
我觉得struts2采用annotation的方式配置没有采用配置文件集中配置好,配置文件的可维护行更好一些
感觉struts2也是在盲目的追求新技术
感觉struts2也是在盲目的追求新技术
2 楼
highriver
2007-05-11
我的action很长,你可以不看,其实就是为了说明方便。
1 楼
highriver
2007-05-11
抱歉,create方法上注解用红色字体表示没有显示出来。谢谢各位。
发表评论
-
关于java.lang.NoClassDefFoundError
2009-09-25 12:11 1679一看到java.lang.NoClassDefFoundErr ... -
Terracotta+Spring
2009-08-07 11:42 1258Terracotta3.1.0版本对Spring的支持发生变化 ... -
Eclipse3.4.2死循环编译
2009-07-23 14:37 1442工程报错,查看problem提示error: Descript ... -
Terracotta中集合的操作
2009-07-22 15:08 966下面的数据结构的操作在默认情况下并不是auto-locked. ... -
银弹和我们的职业
2009-07-17 11:50 872http://blog.csdn.net/SystemBug/ ... -
关于在Terracotta中使用ReentrantReadWriteLock
2009-07-17 11:19 1039ReentrantReadWriteLock 不需要额外的配置 ... -
Summary of Terracotta Locks
2009-07-15 16:37 1083Summary of Terracotta Locks clu ... -
Jamon监控业务层方法性能
2009-07-02 16:15 18481.jamon好象没有提供maven的dependency. ... -
Waiting for changelog lock
2009-06-25 10:34 2427导致这样的问题可能是liquibase的表DATABASECH ... -
单元测试中使用jdcblogger观察打印的sql
2009-06-24 11:35 1740单元测试中使用jdcblogger观察打印的sql 1.lo ... -
eclipse3.4.2快速恢复
2009-06-12 10:06 994遇到eclipse崩溃后,总是担心重新安装eclipse还需要 ... -
ubuntu启动器的权限
2009-06-11 16:16 1836eclipse3.4.2在使用sudo命令打开一次后,可能再用 ... -
Compass的更新索引操作
2009-06-10 10:51 1290Compass的索引更新操作的源码是先删除,后创建。所以当在外 ... -
Activemq收发消息的目的地不一致的问题。
2009-06-10 10:45 2619发送消息,在发送者的应用中定义了queue: <amq ... -
Myeclipse切换到Eclipse3.4.2
2009-05-15 17:59 1297解决从Myeclipse到Eclipse3.4.2 jee出现 ... -
关于jbpm预研时的问题
2008-03-10 00:36 42391.有没有人使用struts2或webwork与jbpm结合使 ... -
关于execAndWait的问题
2008-01-25 14:14 3747使用了execAndWait,wait.jsp页面中定义如下: ... -
关于如何在fitler中使用转发到.do的问题
2007-11-21 23:32 3372现在需要使用filter实现一个网站登陆时”记住用户名“的功能 ... -
关于ibatis的联表查询的映射
2007-08-13 01:01 5365权限设计中,现在有三个表,分别是role,role_opera ... -
关于使用annotation实现struts2中的"dispatchAction"
2007-05-09 00:05 6773如题,谢谢。 通过配置文件好象很好实现,主要定义多个actio ...
相关推荐
Struts 2的数据校验还可以通过注解方式进行,使用@FieldCheck、@Validations等注解来指定字段的校验规则。这种方式更加直观,减少了代码量,但可能需要额外的库支持。 为了处理更复杂的数据校验场景,Struts 2支持...
Struts2是一个非常流行的Java Web应用框架,它...理解并熟练应用Struts2的校验框架对于构建健壮的Web应用至关重要。通过合理的配置和编程,你可以确保应用程序的数据质量,提高安全性,同时为用户提供友好的交互体验。
在这个“一个简单的Struts校验例子”中,我们将探讨如何在Struts框架中实现数据验证,这对于确保用户输入的正确性和安全性至关重要。 在Web应用程序中,数据验证通常在客户端和服务器端进行。客户端验证可以提供...
在`execute()`方法中,我们设置了这个消息并返回`SUCCESS`,这是Struts2中表示操作成功的一个常量。 Struts2的动作配置通常在`struts.xml`文件中完成。在这个例子中,我们定义了一个名为`HelloWorld`的action,它...
`CollectionFieldValidator`是Struts2框架中处理集合验证的类,其主要任务是对用户提交的集合数据进行校验。这个类通常会与表单字段关联,当用户尝试提交包含多个值的字段时(例如,多选框或复选框),`...
Struts2注解是Struts2框架中的一种简化配置的方式,允许开发者在代码中直接进行配置,无需在XML文件中进行繁琐的设置。这提高了开发效率,并使得代码更具有可读性。 一、配置web.xml 在Struts2中,web.xml是部署...
在Struts2中,非字段校验通常在Action的`validate()`方法中实现。例如,检查两个密码是否一致: ```java public class RegistrationAction extends ActionSupport { private String password; private String ...
此外,Struts2提供了一些安全相关的拦截器,例如,Validations拦截器用于字段验证,而SessionAware接口可以帮助开发者管理会话中的信息。 总结起来,"基于Struts2的购物网站"项目涵盖了Web开发中的多个核心知识点,...
6. **文件上传下载**:Struts2提供了一套完整的文件上传和下载的API,可以方便地处理用户上传的文件,并且支持多文件上传,这对于处理图像、文档等数据的web应用来说非常实用。 7. **初步上手**:了解如何搭建...
这些可以通过Struts2的拦截器和Action的校验规则来实现。 5. **安全注意事项**: - 文件名处理:避免使用原始文件名,以防路径遍历攻击,应重命名上传的文件。 - 文件类型检查:验证上传的文件类型,防止上传恶意...
14. **VisitorFieldValidator**:允许将Action中的对象属性校验委托给该对象已定义的校验方法。 15. **CustomValidator**:实现自定义的验证逻辑。 16. **ValidationParameter**:提供参数以定制验证行为。 ### ...
Struts的验证框架Validate是Apache Struts框架中的一个重要组成部分,主要用于处理用户输入的数据验证。在Web应用程序中,数据验证是确保用户提交的信息符合业务规则的关键步骤,防止非法数据进入数据库或引发程序...