operamasks 中w:dataGrid的getSelectedValues() 获取的值为空解决办法
昨天在使用dataGrid控件时获取选择的数据返回空值,前端代码:
<w:dataGrid paged="true" rows="20" id="grid" var="data" toolBarPosition="top" idColumn="id" singleSelect="true" selectionModel="#{constantBean.checkBox}"> <w:outputColumn id="id" header="ID" value="#{data.id}" hidden="true" /> <w:outputColumn header="授权对象" id="masterName" width="220" /> <w:outputColumn header="访问对象" id="accessName" width="220" /> <w:outputColumn header="是否授权" id="isAuthorized"/> <w:outputColumn header="类型" id="typeName" /> <w:outputColumn id="createDate" header="创建时间" width="139" converter="dateConverter"></w:outputColumn> <w:outputColumn id="createUser" header="创建人" width="86"></w:outputColumn> <w:outputColumn id="lastModifyDate" header="最后修改时间" width="144" converter="dateConverter"></w:outputColumn> <w:outputColumn id="lastModifyUser" header="最后修改人" width="119"></w:outputColumn> <w:pagingToolbar displayInfo="false"> <w:button id="add" image="../resources/images/new.gif" value="添加" /> <w:button id="modify" image="../resources/images/modify.png" value="修改" /> <w:button id="delete" onclick="if (!confirm('你确定要删除吗?')) {return false };" image="../resources/images/delete.gif" value="删除" /> </w:pagingToolbar> </w:dataGrid>
后台代码:
@SaveState @DataModel(id = "grid") private List<FuncPrivilege> gridData; @Init("gridData") public void initGridData() { log.debug("initGridValue invoke"); gridData = funcPrivilegeService.getResources("0"); }
后来发现datagrid的页面定义有问题:idColumn="id", 把这个属性的定义取消掉,getSelectedValues就可以获取选择的对象信息了。
另外要注意的地方:在使用GridDataProvider作为数据源的时候,必须使用 idColumn="id" 来定义grid标签,这样才不会使getSelectValue()方法出问题!!!
详细的原理参考:http://www.operamasks.org/forum/viewthread.php?tid=6804