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 οnclick="add()" type="button" name="search" value="发布房屋信息" /></label> <label class="ui-green"><input type="button" name="search" value="退 出" οnclick='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" οnclick='update(${house.id})' name="search" value="修 改" /></label></td>
<td class="house-price"><label class="ui-green"><input type="button" οnclick='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>