`
aine_pan
  • 浏览: 43701 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

display tag 使用技巧(一)

阅读更多
display tag的相关介绍网上不算太多,所以学习还是要自己摸索,比较好的介绍:
http://hi.baidu.com/lvjunnan/item/aa5abcf4289e91bc31c199db
http://hi.baidu.com/hicc2012/item/39aec890118bfc18934f415f
但是这些介绍的都比较肤浅,甚至有的例子我都跑不通。
今天记录一个我自己用的例子:display 中使用checkbox 作为一列的相关操作
背景:我们很多地方需要设一对多的关系,这样第一个页面选择主key,第二个页面展示所有的可选项,并且把已经选上的条目打上勾,用户可以重新选择后提交新数据。

先描述先display tag的代码
<div class="displayTable">
		<display:table name="userFuncList" id="row" pagesize="15" export="true" class="displaytag" requestURI="func2user_view.action" >
			<display:column title="编号"style="text-align:center;"> 
				${row_rowNum} 
			</display:column>	
<display:column headerClass="dataHead" property="id.funcID" title="选中<input type='checkbox' name='checkall' value='all' onclick='checkAll();'/> " media="html" style="text-align:center;" decorator="com.mmif.web.decorator.SelectDecorator" >	
			</display:column>
			<display:setProperty name="export.csv.filename" value="Function2User.csv"/>
			<display:setProperty name="export.excel.filename" value="Function2User.xls"/>	
		</display:table>  

可能有点乱,但是大概实现的功能就是展现后台从DB中查询出来的table。
第一列是编号,跳过不讲。
第二列是我要讲的checkbox列,主菜单上有个checkbox,用来多选。
下面2个是导出文件,定义了文件格式和名称。

在action中生成需要展现的list就行了,别忘了userFuncList的属性构造器:
public String view(){
	userFuncList tempFunc = service.loadUserFunctions(userID);
	return SUCCESS;
        //略去具体逻辑
	}

在model驱动实体里面有一个属性是表示要不要打勾的。
上面的代码大致能显示出来记录了,但是并不能满足我们打勾的目标,因为decorator="com.mmif.web.decorator.SelectDecorator" 我们还没有实现。
装饰者或者是装饰器,主要用来修改栏位的显示方式,在1.1里面需要实现ColumnDecorator 接口,在1.2里面接口被定义成DisplaytagColumnDecorator,所以我们需要实现这个接口来显示checkbox
public class SelectDecorator implements DisplaytagColumnDecorator {

	@Override
	public Object decorate(Object arg0, PageContext arg1, MediaTypeEnum arg2) throws DecoratorException {
      Integer elementid = (Integer) arg0;
//省略了判断逻辑
      return "<input type='checkbox' name=\"selected"+elementid+"\" type=\"checkbox\" value=\""+elementid+"\" checked=\"checked\"/>";
}
}

值得注意的是,如果显示的记录有多条,这个方法会被调用多次,但是你不能从每次调用的PageContext 中获取到当次调用的具体request信息,而PageContext中保留的是你最后一条记录的信息,这点我觉得很不好,需要再完善。
如果你使用的是复杂类型,我建议是放在session中共享数据,自己做好清楚动作。

这样就可以根据你的逻辑判断给需要打勾的记录打上勾了。

然后是提交数据了,如果你没有区分id,那么提交打包的数据将是一样的name,这个感觉不太好,所有大家注意到我的checkbox的name都加了key作为标识,这样在取数据的时候会方便点。如果没有选中的记录,提交时是不会打包数据的,这点很好。
selected2 2 11
selected4 4 11

到这里整个的需求就基本完成了,有很多地方需要完善,但是大家可以看看我上面转的2个链接,那是基础的东西,再看看我写的,可能就不觉得那么乱了。

记录以备查询。
分享到:
评论

相关推荐

    display tag使用帮助

    display tag使用的一些说明,一些使用技巧

    js使用小技巧

    Javascript小技巧一箩筐 事件源对象 event.srcElement.tagName event.srcElement.type 捕获释放 event.srcElement.setCapture(); event.srcElement.releaseCapture(); 事件按键 event.keyCode ...

    C#DataGridView中的常用技巧

    dbfC#DataGridView中的常用技巧 只列出技巧部分,后面会有补充 0(最基本的技巧). 获取某列中的某行(某单元格)中的内容 this.currentposition = this.dataGridView1.BindingContext [this.dataGridView1.DataSource,...

    LotusDomino学习笔记(400页涵盖代理和公式使用)

    39. Display Rich Text fields in a view 86 40. Auto-Launch a file attachment 87 41. Showing a response count without showing the responses 89 42. 常用的几个按钮收集 91 43. 在WEB上从视图删除文档技巧 93 ...

    LotusDomino学习笔记.doc

    39. Display Rich Text fields in a view 86 40. Auto-Launch a file attachment 87 41. Showing a response count without showing the responses 89 42. 常用的几个按钮收集 91 43. 在WEB上从视图删除文档技巧 93 ...

    Lotus Domino WEB 开发技术积累-DOC(313页)

    39. Display Rich Text fields in a view 86 40. Auto-Launch a file attachment 87 41. Showing a response count without showing the responses 89 42. 常用的几个按钮收集 91 43. 在WEB上从视图删除文档技巧 93 ...

    Lotus Domino WEB详细 学习笔记

    116. Hiding attachments (without noscript tag!) 295 117. Listing search results in groups 296 118. 如何在表单中加入计数器? 300 119. 怎样限制一个WEB用户只有登陆才能使用数据库 302 120. ...

    EXTJS总结.txt

    可以是插入一个元素,也可以是创建一个元素(要创建的话请使用“DomHelper配置项对象”作为参数传入),总之,这个元素作为当前元素的第一个子元素出现。 var el = Ext.get('elId1'); // 插入的dom节点作为第一个...

    黑马程序员 安卓学院 万元哥项目经理 分享220个代码实例

    |--屏幕相关之Display类获取屏幕尺寸和分辨率 |--屏幕适配之ScrollView |--屏幕适配之像素dp和px之间转换 |--工具类之Log的封装类 |--工具类之不同log打印的封装 |--工具类之开启新的Activity |--布局加载器的获取 |...

    Visual C++ 编程资源大全(英文源码 其它)

    1,01.zip Output 显示所有的调试信息(5KB)&lt;END&gt;&lt;br&gt;2,02.zip Some general debugging tips 一般的调试技巧(11KB)&lt;END&gt;&lt;br&gt;3,03.zip Debugging ISAPI extension 调试ISAPI扩展(4KB)&lt;END&gt;&lt;br&gt;4,04....

Global site tag (gtag.js) - Google Analytics