编程资料集中营
 | 网站首页 | 文章中心 | 编程资料2 | 软件下载 | BT下载 | 八卦星闻 | 音乐在线 | 在线游戏 | 免费电影 | 进入问吧 | 
struts标签,请你走开(系列一), 在项目开发的很多时候,用户需要更友好,更容易理解的操作界面,而为了能够达到这种表现界面,struts标签显得力不从心,本人经过几个项目的开发当中逐渐的摈弃了struts标签,而由JSTL来做为JSP页面的表达者。struts标签之死穴一不支持嵌套看看这种常见的需求吧。一个用户隶属于一个职能部门,比如项目要求职能部门有五个(乱写的)1、企划部2、网络集成部,
您现在的位置: 编程资料,学习资料,c,c++,vc,vc++,java,jsp,j2ee,j2me,asp,php >> 文章中心 >> JAVA 专区 >> Struts 技术 >> 文章正文
【字体:
struts标签,请你走开(系列一)   进入问吧

本站地址:http://www.bajiao123.com

作者:佚名    文章来源:不详    点击数:    更新时间:2007-3-23    

struts标签,请你走开(系列一)

在项目开发的很多时候,用户需要更友好,更容易理解的操作界面,而为了能够达到这种表现界面,struts标签显得力不从心,本人经过几个项目的开发当中 逐渐的摈弃了struts标签,而由JSTL来做为JSP页面的表达者。
struts标签之死穴一 不支持嵌套
看看这种常见的需求吧。一个用户隶属于一个职能部门,比如
项目要求 职能部门有五个(乱写的)
1、企划部
2、网络集成部
3、行政部
4、营销部
5、产品部
项目要求 一共有二个员工
1、张三 隶属于行政部
2、李四 隶属于营销部
而你想把张三和李四都列表出来,显示为如下:
姓名 部门名称
张三 行政部
李四 营销部
而且还需要用户的列表链接到修改页面当中(假如只修改部门)应该如何做呢。
在使用struts标签是很难做到的,除非你非常不在意内存的使用(乱写技术性代码)
看看JSTL是如何做的吧。
从STRUTS的ACTION当中加载两个对象

List?GetAllDept? = ?UserDAO.GetAllDept(); // 取得所有部门

List?GetALLUser? = ?UserDAO.GetAllUser(); // 取得所有用户

request.setAttribute( " View_Dept " ,?GetAllDept);

request.setAttribute( " View_User " ,?GetALLUser); 在页面当中加入对JSTL的引用
<%@?taglib?uri="http://java.sun.com/jsp/jstl/core"?prefix="c"%>
然后写代码如下:
<table>

<tr>

<td?align="center">

<a?href="User.do?method=EditUser&UserId=<c:out?value='${View_User.UserId}'/>">

<c:out?value="${View_User.UserName}"?/>?</a>

</td>

<td?align="center">

<c:forEach?items="${View_Dept}"?var="View_Dept">

<c:if?test="${View_User.Dept.DeptId==View_Dept.DeptId}">

<c:out?value="${View_Dept.DeptName}"?/>

</c:if>????????????????????????????

</c:forEach>

</td>

</tr>

</table>
其中View_User.Dept.DeptId表示USER表与DEPT表的一个关系(外键)
你就可以看到所显示的列表了。

还有如果在修改用户时,则也与上面的差不多,首先在ACTION当中加入:

String?ModifyUserId?=?request.getParameter("GroupUserId");

if?(ModifyUserId?==?null?&&?ModifyUserId.equals(""))?{

//这是出错处理

request.setAttribute("UserMsg",?"User.ValidateUser");

return?mapping.findForward("Fail");

}

DynaValidatorForm?UserActionForm?=?(DynaValidatorForm)?form;

User?user?=?UserDAO.GetUser(ModifyUserId);????????

List?GetAllDept?=?UserDAO.GetAllDept();//取得所有部门

request.setAttribute("View_Dept",?GetAllDept);

UserActionForm.set("User",?User);然后页面当中显示如下(部门为LISTBOX),例子当中只显示部门
<html:select?property="DeptAsString">????????????

<c:forEach?items="${View_Dept}"?var="View_Dept">????????

<c:choose>????????????????????????

<c:when?test="${User.Dept.DeptId==View_Dept.DeptId}">

<option????value="<c:out?value='${View_Dept.DeptId}'?/>"selected>????

<c:out?value="${View_Dept.DeptName}"?/>????????????

</option>????????????????????????????

</c:when>????????????????????????????

<c:otherwise>????????????????????????

<option?value="<c:out?value='${View_Dept.DeptId}'?/>">????????

<c:out?value="${View_Dept.DeptName}"?/></option>????????

</c:otherwise>????????????????????????

</c:choose>

</c:forEach>

</html:select>
可以看到HTML的SELECT有一个DeptAsString,你可以在FORM当中指定一个STRING的FORM属性。
这样用户的要求就可以完成了。
本次只说明方法,而代码没有经过测试。希望大家多多观注我的BLOG,下一次将臭骂ACTIONFROM不支持的DATE类型及解决方法。

@家军 2006-09-25 16:36 发表评论

   

进入问吧

本站地址:http://www.bajiao123.com

文章录入:admin    责任编辑:admin 
高级搜索
编程资料集中营