EL表达式,JSTL标签,Structs标签
EL一般和JSTL一起使用,那是过去式了,这个没有用到,全部使用的是Structs标签。
EL: http://blog.csdn.net/qwerasdf123/article/details/4189889
jstl: http://www.cnblogs.com/lihuiyy/archive/2012/02/24/2366806.html
Stucts: http://blog.csdn.net/zxl315/article/details/2886456
EL和jstl的区别: http://www.360doc.com/content/11/1121/16/7874148_166229306.shtml
标志引入
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="sx" uri="/struts-dojo-tags"%>
1.逻辑控制
1.1条件标签 if else
1.2迭代标签 iterator
1.3组合标签
1.4分割标签<s:generator ...>
1.5合并标签<s:merge ... >
1.6排序标签<s:sort ....>
2.数据输出
2.1链接标签<s:a ... >
2.2Action标签 <s:action ... >
2.3JavaBean标签
2.4日期标签
2.5调用标签
2.6引用资源文件标签
2.7包含页面标签
2.8传递参数标签
2.9值栈标签
2.0.1国际化标签
2.0.2链接标签
2.0.3属性标签
3.Ajax标签
3.1链接标签
3.2自动完成标签
3.3自动事件绑定标签
3.4日期选择标签
3.5树标签
3.6Tab标签
一般用到的是迭代,国际化,ajax,条件,属性标签等。 使用<s:debug/>来查看值栈中的值。这个很有用处的。
<div id="header" class="wrap"> <div id="logo"> <img src="/House/images/logo.gif" /> </div> <div class="search"> <label class="ui-green"><input onclick="add()" type="button" name="search" value="发布房屋信息" /></label> <label class="ui-green"><input type="button" name="search" value="退 出" onclick='document.location="/House/index.jsp"' /></label> </div> </div> <div class="main wrap"> <s:div id="HouseArea"> <table class="house-list"> <c:choose> <c:when test="${sessionScope.houseBean ne null}"> <c:forEach items="${sessionScope.houseBean.houses}" var="house" varStatus="status"> <c:choose> <c:when test="${status.count%2 != 0}"> <tr> </c:when> <c:otherwise> <tr class="odd"> </c:otherwise> </c:choose> <td class="house-thumb"><span><a href="House_show?id=${house.id}"><img src="/House/images/thumb_house.gif" /></a></span></td> <td> <dl> <dt> <a href="House_show?id=${house.id}">${house.title}</a> </dt> <dd> ${house.street.district.name}区${house.street.name},${house.floorage }平米<br /> 联系方式:${house.contact } </dd> </dl> </td> <td class="house-type"><label class="ui-green"><input type="button" onclick='update(${house.id})' name="search" value="修 改" /></label></td> <td class="house-price"><label class="ui-green"><input type="button" onclick='del(${house.id}, ${sessionScope.houseBean.currPage})' value="删 除" /></label></td> </tr> </c:forEach> </c:when> <c:otherwise> <tr> <c:out value="无租房信息"></c:out> </tr> </c:otherwise> </c:choose> </table> <%--当点击下一页时,页面将houseBean通过set传给HouseAction,然后去数据库取数据 然后返回给页面,我的错误是:targets写错了,没有将currPage传过去,应该是这样写的:houseBean.currPage=??? 还有就是一定要先测试一下,然后再来进行页面传参,还有就是HouseAction没有为houseBean生成set/get方法 还有就是ajax刷新机制,这个 <sx:a targets="HouseArea" href="/House/House_ajaxList.action?houseBean.currPage=1"> 表示的是用户点击这个,然后访问 House_ajaxList.action,通过structs.xml来转发,进入HouseAction.ajaxList()方法 这个方法是这样写的return "ajaxL"+list().subString(1),之前太着急看错了,以为没有执行list()方法,后来打断点才发现 在返回ajaxList字符串之前,会访问list()方法,然后会通过反射取到houseBean,然后到数据库中取值,取到了存放到session中 这个我有点疑惑,如果数据量很大怎么办?和二期项目博客园一样,感觉使得session好沉重。 还有就是我对于dojo标签不是很清楚,还有structs标签也是一样 不过最后还是完成了,我是菜鸟,我在路上。 --%> <div class="pager"> <ul> <li class="current"><sx:a targets="HouseArea" href="/House/House_ajaxList.action?houseBean.currPage=1">首页</sx:a></li> <li class="current"><sx:a targets="HouseArea" href="/House/House_ajaxList.action?houseBean.currPage=%{houseBean.currPage - 1 }">上一页</sx:a></li> <li class="current"><sx:a targets="HouseArea" href="/House/House_ajaxList.action?houseBean.currPage=%{houseBean.currPage + 1 }">下一页</sx:a></li> <li class="current"><sx:a targets="HouseArea" href="/House/House_ajaxList.action?houseBean.currPage=%{houseBean.maxPage}">尾页</sx:a></li> </ul> <span class="total">${sessionScope.houseBean.currPage}/${sessionScope.houseBean.maxPage}页</span> </div> </s:div> </div> <div id="footer" class="wrap"> <dl> <dt>租房 © 2015 xxx科技有限公司 ICP证1000001号</dt> <dd>关于我们 · 联系方式 · 意见反馈 · 帮助中心</dd> </dl> </div>