`
aine_pan
  • 浏览: 44856 次
  • 性别: 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的使用方法和技巧。 首先,我们来了解一下Display Tag的核心标签`&lt;display:table&gt;`。这个标签用于在HTML表格中展示数据集,它可以与任何Java集合或数据源(如List、Set、Map...

    Javascript小技巧一箩筐

    - `display:inline`:将元素显示在行内。 - `hidefocus=true`:隐藏焦点。 - `word-break:break-all`:根据宽度自动换行。 - `setInterval("scrollwindow()", delay)`:设置定时器。 - `clearInterval(timer)`...

    这是关于常用的JavaScript的使用技巧

    以下是一些常见的JavaScript使用技巧和知识点: 1. 事件处理:在JavaScript中,`event.srcElement` 是用来获取触发事件的元素,而 `event.srcElement.tagName` 和 `event.srcElement.type` 可以获取元素的标签名和...

    javascirpt 小技巧 javascirpt 小技巧

    JavaScript 是一种广泛应用于网页和网络应用的脚本语言,它在浏览器环境中运行,为用户提供交互式体验。...以上只是JavaScript中的一部分小技巧,实际开发中还有更多实用的功能和方法等待开发者去发掘和运用。

    js使用小技巧

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

    javascript小技巧,含有多种特效,实用功能

    - **`event.srcElement.tagName`** 和 **`event.srcElement.type`**: 这两个属性可以用来获取触发事件的元素的标签名和类型。这对于处理特定类型的元素(如按钮、输入框等)非常有用。 - **`event.srcElement....

    JavaScript 技巧雜匯.pdf

    在《JavaScript技巧雜匯》文档中,我们发现了一系列实用的JavaScript技巧,这些技巧涵盖了事件处理、表单操作、DOM操作等多个方面。接下来,我们将详细探讨这些技巧的具体应用及其背后的原理。 #### 事件处理技巧 ...

    Javascript技巧很全.doc

    JavaScript是一种广泛应用于网页和网络应用开发的脚本语言...以上只是JavaScript众多技巧中的一部分,JavaScript的灵活性和强大功能使其成为网页开发不可或缺的工具。掌握这些技巧将有助于提升网页的交互性和用户体验。

    javascript小技巧.doc

    24. **并排显示**:使用 `display:inline` 可以使元素并排显示。 25. **隐藏焦点**:`hidefocus=true` 可以隐藏元素的焦点。 26. **根据宽度换行**:`style="word-break:break-all"` 或 `word-wrap: break-word;` ...

    javascript小技巧

    事件源对象 `event.srcElement` 提供了触发事件的元素信息,如 `tagName` 和 `type` 属性。同时,`event` 对象包含按键信息,如 `keyCode`,以及 `shiftKey`, `altKey`, `ctrlKey` 来判断组合键的状态。`setCapture...

    JavaScript中一些常用的小技巧

    18. 并排显示:`display:inline` 可以使元素并列显示,而 `word-wrap: break-word;` 和 `word-break: break-all;` 则用于控制文字超出容器时的换行规则。 19. 自动刷新:`;URL=http://c98.yeah.net"&gt;` 可以设定页面...

    ASP.net2.0网站开发技巧参考大全

    1. **事件处理**:在ASP.NET 2.0中,可以通过`event.srcElement.tagName`和`event.srcElement.type`获取触发事件的对象的标签名和类型。此外,`event.srcElement.setCapture()`和`event.srcElement.releaseCapture()...

    JavaScript常用技巧

    JavaScript是Web开发中不可或缺的一部分,它提供了丰富的功能和技巧来增强网页交互性。以下是一些JavaScript常用技巧的详细说明: 1. **事件源对象**:`event.srcElement` 是一个对象,代表触发事件的元素。你可以...

    javascript技巧

    在JavaScript编程中,掌握一系列的小技巧可以帮助开发者提高工作效率,减少代码量,同时还能使代码更加优雅。本文将围绕JavaScript中的对象及其属性集展开讨论,介绍一些实用且重要的知识点,帮助读者更好地理解和...

    javascript技巧大全

    10. **并排显示**:使用`display: inline`可以让多个元素并排显示。 - 示例代码: ```css .inline-elements { display: inline; } ``` 11. **隐藏焦点**:通过设置`hidefocus`属性可以隐藏元素的焦点高亮。 ...

    JavaScript实现一个简易的计算器实例代码

    if (target.tagName === 'BUTTON') { // 处理按钮点击事件 switch (target.id) { case 'backSpace': // 退格处理 break; case 'clearNum': // 清空输入 break; default: // 普通数字或运算符输入 input....

    web开发常用小技巧.doc

    - `event.srcElement` 是IE浏览器中的事件源对象,可以获取触发事件的元素,通过`.tagName`和`.type`属性可以获取元素类型和事件类型。 - `event.setCapture()` 和 `event.releaseCapture()` 分别用于开启和关闭...

Global site tag (gtag.js) - Google Analytics