精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-05-11
通过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方法。真的很奇怪。不知道是哪里配置的问题。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-05-11
抱歉,create方法上注解用红色字体表示没有显示出来。谢谢各位。
|
|
返回顶楼 | |
发表时间:2007-05-11
我的action很长,你可以不看,其实就是为了说明方便。
|
|
返回顶楼 | |
发表时间:2007-05-12
我觉得struts2采用annotation的方式配置没有采用配置文件集中配置好,配置文件的可维护行更好一些
感觉struts2也是在盲目的追求新技术 |
|
返回顶楼 | |
发表时间:2007-05-14
这个是我后来找到的一个资料,大家看看就明白了。xly_971223 同志说的对,用配置文件可能好一些。
http://www.nabble.com/struts2-validation-for-only-one-method-in-action-tf3267302.html#a9083597 |
|
返回顶楼 | |
发表时间:2007-05-15
貌似你的class头上少了一个@Validation
http://struts.apache.org/2.0.6/docs/validation-annotation.html |
|
返回顶楼 | |
发表时间:2007-05-15
写少了个括号,嘻嘻
@Validation() 加在public class RoleAction...头上 |
|
返回顶楼 | |
发表时间:2007-05-16
我最初有的,后来去了,不管用。它应该只是表明进行类级别的检验。
|
|
返回顶楼 | |
发表时间:2007-05-24
除了public String input()
其他任何名字的方法都会validate 真拿它没办法 我就是不想写xml |
|
返回顶楼 | |
发表时间:2007-05-24
|
|
返回顶楼 | |