[size=large][color=red]jspx 一個來自于埃及的java web快速開發架構。談談使用jspx總結一些東西,關于jspx網上資料很少,希望大家分享下。
JSPX提供DataTable是一個集查詢、分頁、顯示、導出excel等為一身的标簽,使用起來非常簡單,但也有它不足的地方。
Jspx頁面,可以對應同名的java。
在td中插入jspx标簽
<datatable id="datatable" datasource="java:/comp/env/jdbc/crisk"
table="table1"
sql="select code,name,test1 from table1 "
showrowindex="false" pagesize="10" showFooter="true"
showNewCommand="false" autobind="true"
headerstyle="text-align:center;" headerclass="title"
tdstyle="text-align:center; " rowstyle="text-align:center;"
tdclass="odd" rowclass="even" cellspacing="0"
width="100%" align="left" class="sortable"
selectedrowstyle="background-color:#59eeee"
footerstyle="background-color: #ECE9D8; color:#000000;font-weight:600;text-align:center;"
dateformat="yyyy-MM-dd" excel="true" noresults="無此資訊" noresultsclass="ie" var="company_debt_info">
其中:
屬性autobind:表示剛進入頁面,是否運作sql,自動加載查詢結果;
屬性excel="true":表示顯示導出查詢結果excel,若是不想導出,不用添加excel="true" ;
table="table1",可以在後面外連接配接查詢,條件查詢中用到,類似:“${table1.code}”,取出查詢結果值。
取出顯示列:
一:取出sql中已有的列名test1對應的結果:
<datacolumn text="測試1" fieldname="test1" datatype="string" width="4%" />
二:取出sql沒有相應的列,需要分散查詢,傳過去已查到的字段“code”的值,
<datacolumn text="測試2" fieldname="code" width="7%" type="lookup" lookup="fk1" datatype="string" />
分散查詢對應:其中value顯示要出來的字段名,key用于對照,用分查詢的“code”對應傳過來的“code”,實作一對一,不需要在sql中對應,自動比對。
<datalookup name="fk1" key="code" value="name"
sql="select name,code from table2 " />
<exportToExcel filename="selectedDials.xls"
rowstoexport="selected" command="導出標明行到excel" />
jspx中使用html原有的<a>标簽:
<datacolumn text="名稱" fieldname="name" datatype="string" width="7%" >
<itemTemplate>
<a href="tomodify.do?company_code=${table1.code}" target="_blank" rel="external nofollow" target="_self">${table1.name }</a>
</itemTemplate>
table屬性:是你需要查詢的資料庫表名;
sql屬性:查詢的SQL語句;
showrowindex屬性:表示需要顯示序号;
<dataparam>元素用來定義傳入sql語句的參數,name屬性用于指定傳入SQL的變量名稱,此處為MYID,而control指定變量從哪個屬性取值,此例中為userId,表明是從userId中取得值,并指派給MYID,expression為定義的表達式.
<datapk>元素定義主鍵,name為要作為主鍵的屬性,sequence為Oralce中table所對應的sequence的名稱。
<datacolumn>元素用于定義顯示的資料列,其中text屬性表示顯示的列名稱,fieldname表示從哪個屬性中取值,type表示該列的資料類型,required表示該列是必須的。
<datacolumnCommand>元素表示定義列操作,JSPX預設提供了幾個列操作,如select表示選擇該條記錄,并會傳回該條記錄的PK;check類型會顯示為checkbox,并可對所有記錄進行選擇;edit類型表示對記錄進行修改,JSPX對自動提供對記錄的更新操作;remove類型表示删除記錄;
<footer>用于指定頁腳内容。
Java對應:
用于接收頁面控件值,其中聲明變量名和控件id值對應。
@JspxWebControl
private DataTable datatable;
@JspxWebControl
private Select fromDate;
@JspxWebControl
private Input endDate;
用endDate.getValue() :表示标簽id為endDate傳來的值
頁面button觸發事件:
<input type="button" id="butquery" οnclick=""
onserverclick="execquery1" value="查詢" />
背景java:
execquery1(WebControl sender, String args)
protected void pageLoaded(){}用于初始化界面之前指派。
Jspx頁面編寫類似Jsp頁面table表單:
例子:
方法一:在前台使用sql查詢,使用标簽<sqlrepeater>
<table>
<tr>
<th>名稱</th>
<th>類型</th>
<th>日期</th>
<th>排名</th>
</tr>
<!-- ${this.sql }由背景java聲明變量,pageLoaded()中指派,用setSql()方法傳值,f1後面的字段為sql查詢字段名-->
标簽<sqlrepeater>是循環标簽,有sql編寫。可以嵌套<sqlrepeater>,形成子循環。
<sqlrepeater id="func1"
sql="${this.sql }"
itemlist="func_level1" var="f1">
<tr align="center">
<td>${f1.name } </td>
<td>${f1.type } </td>
<td>${f1.date } </td>
<td>${f1.slist} </td>
</tr>
</sqlrepeater>
</table>
方法二:在背景使用sql查詢,pageLoaded()查出
背景java:
@JspxBean(scope = JspxBean.REQUEST, name = "table1")
BEANtable1 table1= null;
protected void pageLoaded() {
table1 = (new DAOtable1()).getByPK(code);
}
前台jspx引用:
<td align="center">${table1.name} </td>
循環問題:<sqlrepeater>标簽可以與标簽table中<tr>、<td>配合使用
例子:頁面
<sqlrepeater id="func1"
sql="select name,id from table3 "
itemlist="func_level1" var="f1">
<tr>
<th align="left" bgcolor="#DDDDDD" bordercolor="#BADDFA" >
${f1.name}
</th>
<sqlrepeater id="func2" sql="select p.name,p.id,p.cont from processdef p
where p.type='${this.type }' "
itemlist="func_level2" var="f2">
<tr>
<td align="left" bgcolor="#FFFFFF" bordercolor="#BADDFA" title="${f2.cont}">
${f2.name}
</td>
<sqlrepeater id="func3"
sql="select ivalue from table3 " itemlist="func_level3" var="f3">
<td align="right" bgcolor="#FFFFFF" bordercolor="#BADDFA" width="240">
${f3.ivalue }
</td>
</sqlrepeater>
</tr>
</sqlrepeater>
</tr>
</sqlrepeater>
[/color][/size]