为表格显示定义自定义标记3

表格屏幕快照示例

注意: 在 JSP 页中,包含用于设置 action 名的隐藏参数 jspMode 。请求处理类必须将 action 名设置到 jspMode 会话变量中,这样表格标记才可以用它来跟踪用户操作。

<input type="hidden" name="jspMode" >

请求处理类还必须用从 request 对象中读取的参数值设置会话变量 jspMode

if (request.getParameter("jspMode") != null){
request.getSession().setAttribute("jspMode", 
request.getParameter("jspMode"));
}

要创建查看搜索结果的简单表格显示,使用以下属性文件:

TableHeaderDisplay.properties (为方便观看,将一行代码显示为多行):

SearchEmployee.jsp&EmployeeSearchResults = 
Employee No:150&First Name:210&Last Name:150&Dept:150&Job:60

TableValueDisplay.properties (为方便观看,将一行代码显示为多行):

SearchEmployee.jsp&EmployeeSearchResults = 
EmployeeSearchResults@com.ibm.optimistic.model.bo.Employee@EmpNo
&FirstName&LastName&Dept&Job

图 1 展示了该视图。


图 1. 搜索结果
搜索结果

要创建列类型为 href 的表格显示,使用以下属性文件:

TableHeaderDisplay.properties (为方便观看,将一行代码显示为多行):

SearchEmployee.jsp&EmployeeSearchResults = 
Employee No:150:href&First Name:210&Last Name:150
&Dept:150&Job:60

TableValueDisplay.properties (为方便观看,将一行代码显示为多行):

SearchEmployee.jsp&EmployeeSearchResults = 
EmployeeSearchResults@com.ibm.optimistic.model.bo.Employee@EmpNo
&FirstName&LastName&Dept&Job

显示带有 href 列的表格时(请参阅 图 2),HeaderDisplay 属性包含 Employee No:150:href 项,用于设置到 Employee No. 列的链接。

用户单击 href 链接会调用下面的 JavaScript 函数:

<script language='JavaScript'>
function handleTableLink(linkIndex) {
document.forms[0].iTableLink.value = linkIndex
document.forms[0].jspMode.value = 'Link'
document.forms[0].submit()}
</script>

对于 Employee No:111111handleTableLink(0) 调用上面的函数。这个函数用所选的 href 链接的索引设置表单变量 iTableLinkjspMode 标识了用户操作,如保存、更新或者删除。要得到相应 href 的细节,使用 iTableLink 值。iTableLink 表示值对象的索引。(表格数据来自会话,它以值对象的 vector 的形式存储在会话中)。


图 2. 带有 href 列的表格
带有 href 列的表格

要创建列类型为选择框的表格,使用以下属性文件。

TableHeaderDisplay.properties(为方便观看,将一行代码显示为多行):

SearchEmployee.jsp&EmployeeSearchResults = 
Employee No:150&First Name:210&Last Name:150
&Dept:150&Job:60&Delete:20:checkbox:chkDelete

TableValueDisplay.properties (为方便观看,将一行代码显示为多行):

SearchEmployee.jsp&EmployeeSearchResults = 
EmployeeSearchResults@com.ibm.optimistic.model.bo.Employee@EmpNo
&FirstName&LastName&Dept&Job&control

HeaderDisplay 属性包含 Delete:20:checkbox:chkDeleteentry,以显示选择框。

用户单击选择框,会调用下面的 JavaScript 函数。这个函数根据用户是选择还是取消选择选择框,将 hdchkDelete 设置为 On 或者 Off。

  function chkStatus(val,bool) {
    if(document.forms[0].hdchkDelete.length){
      document.forms[0].hdchkDelete[val].value= bool ?'on':'off';
    }else{
      document.forms[0].hdchkDelete.value=bool ?'on':'off';
    }
  }

图 3 显示了一个带有选择框的表格。用户可以选择任意数量的记录并在一个操作中全部删除。请求处理类读取 hdchkDelete 的参数值。如果相应的选择框的值为 On,那么它就删除这个记录。

可以从 request 对象中读取所选的选择框的索引值 String[] values = request.getParameterValues("hdchkDelete");


图 3. 带有选择框列的表格
带有选择框列的表格

要创建一个带有单选按钮列的表格显示(请参阅 图 4),要使用下面的属性文件:

TableHeaderDisplay.properties(为方便观看,将一行代码显示为多行):

SearchEmployee.jsp&EmployeeSearchResults = Select:50:radio:rdInclude
&Employee No:150&First Name:210&Last Name:150
&Dept:150&Job:60

TableValueDisplay.properties (为方便观看,将一行代码显示为多行):

SearchEmployee.jsp&EmployeeSearchResults = 
EmployeeSearchResults@com.ibm.optimistic.model.bo.Employee@control
&EmpNo&FirstName&LastName&Dept&Job

HeaderDisplay 属性包含 Select:50:radio:rdInclude 项,以显示单选按钮。

用户单击一个单选按钮,会调用下面的 JavaScript 函数。

  function handleTableRadioCtrl(linkIndex) {
    document.forms[0].iTableLink.value = linkIndex;
  }

对于 Employee No:111111handleTableRadioCtrl ('0') 调用上面的函数。这个函数用所选的单选按钮的索引设置表单变量 iTableLink。要得到相应记录的细节,使用 iTableLink 值。iTableLink 表示值对象的索引。(表格数据来自会话,它以值对象的 vector 的形式存储在会话中)。

可以从 request 对象中读取所选的单选按钮索引:String selectedIndex = request.getParameter("iTableLink");


图 4. 列为单选按钮的表格
列为单选按钮的表格

要创建列类型为文本框/组合框的表格显示(请参阅 图 5),使用下面的属性文件:

TableHeaderDisplay.properties (为方便观看,将一行代码显示为多行):

SearchEmployee.jsp&EmployeeSearchResults = Employee 
No:150&First Name:150:textbox:FirstName&Last Name:150:textbox:LastName
&Dept:150:textbox:Dept&Job:60:textbox:Job&Sex:80:combo:sex

TableValueDisplay.properties (为方便观看,将一行代码显示为多行):

SearchEmployee.jsp&EmployeeSearchResults = 
EmployeeSearchResults:Sex@com.ibm.optimistic.model.bo.Employee@EmpNo
&control&control&control&control&control

HeaderDisplay 属性包含以下项以显示文本框和组合框:

  • First Name:150:textbox:FirstName 用于文本框项
  • Sex:80:combo:sex 用于组合框项

TableValueDisplay.properties 文件包含组合框的会话属性键(Sex),它在表格数据会话属性键(EmployeeSearchResults)后面。

请求处理类从 reqeust 中读取参数值,如下所示:

FirstNameValues [0], FirstNameValues [1]... to read firstName values
LastNameValues [0], LastNameValues [1]... to read lastName values
String[]FirstNameValues = request.getParameterValues("FirstName");
String[]LastNameValues = request.getParameterValues("LastName");


图 5. 列为文本框/组合框的表格
列为文本框/组合框的表格




结束语

在本文中,介绍了如何为带有不同 html 控件的表格数据显示创建自定义标记,包括 href、选择框、单选按钮、文本框和组合框。对于有许多 JSP 页的复杂应用程序,用这种表格标记可以减少编码量和维护工作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值