锁定老帖子 主题:JSTL和Struts2谁才是真正的王道
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-12-17
最后修改:2008-12-17
Struts1、struts2的标签都已经用的很久啦,不过最终还是觉得使用Java标准标签库才是真正的王道。 开源(V)框架越来越多,只不过是对于JSTL的不断的扩展,不断的加快开发的速度,但过了很久以后再回来看你使用这个开源(V)框架写出来的代码还能清晰的记得这些对象都封装了什么吗?我是不能保证还能清晰的记得,一个项目下来使用的对象封装太多啦,那里还记得当时是怎么做的呢? 用过Struts2的朋友不知你们是否用过从Session里读取一个List结果集出来,反正我用的时候没有办法从里面把自己想要的结果读取出来,最大还是借助C标签才把自己想要的东西读取出来。(如果有朋友知道如果读取请把您的代码贴出来共享一下。) 以下是我用C标签读取会话中的方法: <c:forEach var="vitem" items="${session.history}"> <p> <input name="history" type="radio" value="${vitem.id}" /> <input type="hidden" id="title${vitem.id}" value="${vitem.itemTitle}" /> <input type="hidden" id="link${vitem.id}" value="${vitem.itemLink}" /> <a href="${vitem.itemLink}" class="p">${vitem.itemTitle}</a> </p> </c:forEach> 当然我的后台在session中封装了一个history的结果集。
虽然Struts2的标签很强大,但也有其自身不足的地方,比如你在后台封装了一个List结果集,在页面里使用的话只能是 <s:iterator value="rollList"> <li> <a target="_blank" href="<%=request.getContextPath()%>/ns_fl/${id}.html" title="${itemTitle}"> <s:if test="${fn:length(itemTitle)>15}"> <c:out value="${fn:substring(itemTitle,0,15)}" />… </s:if> <s:else> <s:property value="itemTitle" /> </s:else> </a> <span class="datetime"> <s:date format="hh:MM" name="itemPudate" /> </span> </li> </s:iterator> 这段代码过了很长一段时间后,再让你看或者别的人再看的时候,还有那么容易看的懂了吗?你还知道这里面封装的是什么对象吗? 用标准标签库的话就不一样啦,你可以设定你这个List里封装的对象。 <c:forEach var="newsItem" items="${list}" > <li> <a target="_blank" href="<%=request.getContextPath()%>/ns_fl/${newsItem.id}.html"> <s:if test="${fn:length(newsItem.itemTitle)>24}"> <c:out value="${fn:substring(newsItem.itemTitle,0,24)}" />… </s:if><s:else> <c:out value="${newsItem.itemTitle}" /> </s:else> </a> </li> </c:forEach> 对比一下以上两段代码,你会发布用C标签你可以清晰的知道自己的List里封装的是什么对象,其实就相当于 for(int i=0;i<list.size();i++){ Object newsItem = (Object)list.get(i); }
这样就相当用对你的List结果集进行了以对象形式的遍历。相比以来这种代码可读性会更高一些。 当然C标签也有不好的地方,比如它就只有一个<c:if>但却没有对应的<c:else>标签,这让操作的时候就只能用<c:if>去判断,也会带来很多的不便。 总的来说项目中不应该过份依赖于一种标签,灵活的使用各种标签,才能让你的页面用户体验更好。 自己制作了JSTL标签库的电子书,感兴趣的朋友可以自己下载。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-12-17
我也很喜欢用jstl, Struts2也是好东西,不过看了楼主说的,为什么要在session存list啊,如果并发量大的话会吃掉很多内存的。
jstl在获取对象时是很好用的,我原来做一个项目基于spring的mvc中用过。其实web层只要好用,方便能提高开发速度就用。 |
|
返回顶楼 | |
发表时间:2009-03-10
我也很喜欢用jstl,面对struts2,有很多的困惑,很多标签都已经改变,到底因该先学struts1里面的标签还是直接学习struts2里面的标签,
到最后干脆全部学习了,方正学习起来很快 |
|
返回顶楼 | |
发表时间:2009-03-11
还是jstl强大。大家看看我用过的一个例子:
<c:forEach var="f" items="${flist}" > <c:forEach var="refF" items="${f.refFList}"> ${record[f.ref_map][refF.id]} </c:forEach> </c:forEach> |
|
返回顶楼 | |
发表时间:2009-03-11
界面上搞这么多的框架啊,以后维护的人头都大了.
项目用的技术越多,将来维护的人难度越大, 这个项目活的寿命也就越短暂 |
|
返回顶楼 | |
发表时间:2009-08-11
刚把struts标签全都换成了jstl,一个html:options都用得头大
|
|
返回顶楼 | |
浏览 3885 次