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" border="1"
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="_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" onclick=""
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>