天天看點

jspx架構使用總結-頁面開發

[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]