Posted on 2007-04-24 15:51
G_G 閱讀(1045)
評論(0) 編輯 收藏 所屬分類:
Reportform 、
JspTag
<?
xml?version="1.0"?encoding="UTF-8"
?>
<!
DOCTYPE?web-app?PUBLIC?"-//Sun?Microsystems,?Inc.//DTD?Web?Application?2.3//EN"?"http://java.sun.com/dtd/web-app_2_3.dtd"
>
<
web-app
>
????
<
taglib
>
????????
<
taglib-uri
>
http://www.extremecomponents.org
</
taglib-uri
>
????????
<
taglib-location
>
/WEB-INF/extremecomponents.tld
</
taglib-location
>
????
</
taglib
>
????
</
web-app
>
<%
@?taglib?prefix
=
"
ec
"
?uri
=
"
/WEB-INF/extremecomponents.tld
"
?
%>
<%
@?taglib?prefix
=
"
c
"
?uri
=
"
/WEB-INF/c.tld
"
?
%>
<%
@?page?language
=
"
java
"
?import
=
"
java.util.*
"
?pageEncoding
=
"
UTF-8
"
%>
<%
String
?path?
=
?request.getContextPath();
String
?basePath?
=
?request.getScheme()
+
"
://
"
+
request.getServerName()
+
"
:
"
+
request.getServerPort()
+
path
+
"
/
"
;
%>
<!
DOCTYPE?HTML?PUBLIC?"-//W3C//DTD?HTML?4.01?Transitional//EN"
>
<
html
>
??
<
head
>
????
<
base?
href
="<%=basePath%>"
>
????
????
<
title
>
My?JSP?'MyJsp.jsp'?starting?page
</
title
>
????
????
<
meta?
http-equiv
="pragma"
?content
="no-cache"
>
????
<
meta?
http-equiv
="cache-control"
?content
="no-cache"
>
????
<
meta?
http-equiv
="expires"
?content
="0"
>
????
<
meta?
http-equiv
="keywords"
?content
="keyword1,keyword2,keyword3"
>
????
<
meta?
http-equiv
="description"
?content
="This?is?my?page"
>
????
????????
<
link?
rel
="stylesheet"
?type
="text/css"
?href
="<c:url?value="
/extremecomponents.css"
/>
">
????
??
</
head
>
??
??
<
body
>
????????????
<%
????????????????List?goodss?
=
?
new
?ArrayList();
????????????????
for
?(
int
?i?
=
?
1
;?i?
<=
?
10
;?i
++
)
????????????????{
????????????????????Map?goods?
=
?
new
?java.util.HashMap();
????????????????????goods.put(
"
code
"
,?
"
A00
"
+
i);
????????????????????goods.put(
"
name
"
,?
"
面包
"
+
i);
????????????????????goods.put(
"
status
"
,?
"
A:valid
"
);
????????????????????goods.put(
"
born
"
,?
new
?
Date
());
????????????????????goodss.add(goods);
????????????????}
????????????????request.setAttribute(
"
goodss
"
,?goodss);
????????????
%>
????????????
????????????
<
ec:table??
????????????
action
="${pageContext.request.contextPath}/test.jsp"
????????????items
="goodss"
????????????cellpadding
="1"
????????????title
="my?bread"
>
????????????
<
ec:row
></
ec:row
>
????????????????
<
ec:column?
property
="code"
/>
????????????????
<
ec:column?
property
="name"
/>
????????????????
<
ec:column?
property
="status"
/>
????????????????
<
ec:column?
property
="born"
?cell
="date"
?format
="yyyy-MM-dd"
/>
????????????
</
ec:table
>
??
</
body
>
</
html
>
{轉}
關鍵字: ? java,eXtremeComponents????
在我開發的一個通用查詢項目中想把查詢結果集的顯示部分采用eXtremeComponents組件來處理,但是碰到個問題,就是組件預先并不知道查詢結果的列名,也就是必須解決Column列的動態顯示問題。 有一種方法就是通過在jsp頁面里羅列一下,但是總感覺不舒服,查文檔發現eXtremeComponents有一接口AutoGenerateColumns可實現此功能,以下為具體實現步驟: 一、在應用的servlet(或struts action等)里(如sqlAction.do)實現根據SQL語句的運行結果獲取字段名稱列表(fieldnames)和查詢結果集(results)并將其放入httpRequest的屬性中
代碼 - List?fieldnames?=?實現[獲取字段名稱列表]方法;??
- List?results?=?實現[獲取查詢結果集]方法;??
- httpRequest.setAttribute("fieldnames",?fieldnames);??
- httpRequest.setAttribute("results",?results);??
results將作為eXtremeTable組件中屬性items的值,fieldnames將用來迭代構造Column對象
二、編寫類AutoGenerateColumnsImpl實現org.extremecomponents.table.core.AutoGenerateColumns接口
代碼 - package?org.boogie.sql.common.ec;??
- ??
- import?java.util.Iterator;??
- import?java.util.List;??
- ??
- import?org.extremecomponents.table.bean.Column;??
- import?org.extremecomponents.table.core.AutoGenerateColumns;??
- import?org.extremecomponents.table.core.TableModel;??
- ??
- public?class?AutoGenerateColumnsImpl?implements?AutoGenerateColumns?{??
- ??
- ????public?void?addColumns(TableModel?model)?{??
- ????????List?fieldnames?=?(List)?model.getContext().getRequestAttribute(??
- ????????????????"fieldnames");??
- ????????Iterator?iterator?=?fieldnames.iterator();??
- ????????while?(iterator.hasNext())?{??
- ????????????String?fieldname?=?(String)?iterator.next();??
- ????????????Column?column?=?model.getColumnInstance();??
- ????????????column.setProperty(fieldname);??
- ??????????????
- ????????????model.getColumnHandler().addAutoGenerateColumn(column);??
- ????????}??
- ????}??
- }??
AutoGenerateColumns接口只有一個方法addColumns供實現,在此方法中通過傳入的TableModel型參數 model可從其Context中獲取到httpRequest中的fieldnames屬性值,然后根據fieldnames列表迭代構造對應 Column后添加到model中
三、在顯示頁文件的eXtremeTable中,配置TableTag的屬性items值為results,配置ColumnTag的屬性autoGenerateColumns值為類AutoGenerateColumnsImpl的全路徑
代碼 - <ec:table???
- ????????items="results"??
- ????????var="result"??
- ????????action="${pageContext.request.contextPath}/sqlAction.do"??
- ????????imagePath="${pageContext.request.contextPath}/images/table/*.gif"??
- ????????title="查詢結果"??
- ????????width="100%"??
- ????????rowsDisplayed="5"??
- ????????>??
- ??<ec:parameter?name="method"?value="ec"/>??
- ??<ec:row>??
- ????<ec:columns?autoGenerateColumns="org.boogie.sql.common.ec.AutoGenerateColumnsImpl"/>??
- ??</ec:row>??
- </ec:table>
|
小結******************************************************************************

<%
@?page?language="java"?pageEncoding="UTF-8"%>

<%
@?taglib?uri="http://jakarta.apache.org/struts/tags-bean"?prefix="bean"%>?

<%
@?taglib?uri="http://jakarta.apache.org/struts/tags-html"?prefix="html"%>

<%
@?taglib?uri="http://jakarta.apache.org/struts/tags-logic"?prefix="logic"%>

<%
@?taglib?uri="http://www.extremecomponents.org"?prefix="ec"?%>?


<%
@?taglib?uri="http://struts.apache.org/tags-tiles"?prefix="tiles"?%>

<%
@?taglib?uri="http://www.jjm.cn/tags-security"?prefix="jjmtag"%>
?

<html>?
????<head>
????????<LINK?href="<%=request.getContextPath()%>/css/extremetable.css"?rel="stylesheet"?type="text/css">
????????<script?language="JavaScript"?src="<%=request.getContextPath()%>/res_others/calendar/calendar.js?">?</script>???? //時間 的 js 插件
????????<LINK?rel="StyleSheet"?type="text/css"?href="<%=request.getContextPath()%>/css/jjmStyle.css">??????
????</head>

????<body>
????
<CENTER>

????<TABLE?border="1"?class="borderLessTable"?width=100%>
????????<html:form?action="/tAT.do">
????????????????<TR>
????????????????????<TD?class="tdQueryCaption13">
????????????????????????<CENTER>?時間范圍:</CENTER>
????????????????????</TD>
????????????????????<TD?class="tdQueryCaption13">
????????????????????<CENTER>
????????????????????????<html:text?property="time"?size="8"?readonly="true"/>?????????????????????//作為 時間 的 javascript 插件
????????????????????????????<img?alt="彈出日歷下拉菜單"?height="16"?width="16"?align="middle"?
????????????????????????????????????src="<%=request.getContextPath()%>/res_others/calendar/img/cal.gif"?
????????????????????????????????????style="cursor:hand;"?
????????????????????????????????????onclick="fPopUpCalendarDlg(time);return?false"/>
????????????????????</CENTER>????????????????????????????
????????????????????</TD>
????????????????????<tD>
????????????????????????<CENTER><html:image?src="/rlzy/images/edit/chaxun.gif"></html:image></CENTER>
????????????????????</tD>
????????????????????
????????????</html:form>
????</TABLE>
????
</CENTER>
????
????????<ec:table??
????????????????items?="list"
????????????????imagePath="${pageContext.request.contextPath}/images/ectable/*.gif"
????????????????cellpadding?="1">
?????????????<ec:row></ec:row>
?????????????
????????????????<ec:column???property?="入段&調離"?/>
?????????????
????????????????<ec:column??cell="com.jjm.extremesite.cell.CorpNameCell"?property="段號"/>???//?? (1)?? 標簽的重寫

????????????????
????????????????<ec:column??cell="com.jjm.extremesite.cell.CorpNameCell"?property="車間"?/>
?????????????????
????????????????<ec:column??property="姓名"?/>
?????????????????
?????????????????<ec:column???property="入段時間"?cell="date"?format="yyyy-MM-dd"??/>???//時間 的表示 cell="date"?format="yyyy-MM-dd"??
?????????????????
????????????????<ec:column???property="調離時間"?cell="date"?format="yyyy-MM-dd"/>
?????????????????
?????????????</ec:table?>

????</body>
</html>

package?com.jjm.extremesite.cell;

import?org.extremecomponents.table.bean.Column;
import?org.extremecomponents.table.cell.AbstractCell;
import?org.extremecomponents.table.core.TableModel;

import?com.jjm.bj.dao.CorpBean;
import?com.jjm.bj.dao.CorpDao;


public?class?CorpNameCell?extends?AbstractCell?
{


????public?void?destroy()?
{

????}


????/**?*//**
?????*?@param?args
?????*/

????public?static?void?main(String[]?args)?
{

????}
????

????private?String?getCorpName(String?id)
{

????????if?(id!=null?&&?id.length()>0)
{
????????????CorpBean?obj?=null;
????????????obj=CorpDao.findByID(id);

????????????if?(obj!=null)
{
????????????????return?obj.getCorpName();
????????????}????????????
????????}????
????????return?"";
????}


????protected?String?getCellValue(TableModel?tableModel,?Column?column)?
{
????????CorpNameCell?corpName=new?CorpNameCell();
????????return?corpName.getCorpName(column.getValueAsString());
????}

}
