一般动作
登录
Wiki: BROPEN ▼: Document Index
»
Space: FAQ ▼: Document Index
»
Page: 利用 formField 标签实现表单域的选择性编辑
搜索
zh
页面动作
导出 ▼: 以PDF格式导出 以RTF格式导出 以HTML格式导出
更多动作 ▼: 打印预览 察看源码
欢迎进入Wiki » FAQ » 利用 formField 标签实现表单域的选择性编辑?

# 利用 formField 标签实现表单域的选择性编辑?

在2014-07-08 09:20上被李小翔修改
评论 (0) · 附件 (0) · 记录 · 信息

在 BroBPM 的流程表单中，通过流程定义中的可编辑字段和只读字段配置，以及表单中的 p:field 标签，可以实现环节只允许编辑部分字段的功能。

对于非流程的表单，对应的有标签 g:formField，通过该标签和 request 属性，可以实现同样的功能。

以下面的表单域 code 为例：

<g:formField bean="${bean}" name="code">
<g:textField name="code" value="${bean.code}" />
</g:formField>

在控制器或者标签前添加下面的代码（设置不同的 request 属性），create、edit 操作时，结果如下：

- 不可编辑：
  request.setAttribute( bropen.framework.Constants.REQ_FORM_RO, true )
- 不可编辑，因为未显式设置code可编辑：
  request.setAttribute( Constants.REQ_FORM_FIRLDS_ED, [""] )
- 不可编辑，因为显式设置code只读：
  request.setAttribute( Constants.REQ_FORM_FIRLDS_RO, ["code"] )
- 可编辑，因为显式设置code可编辑：
  request.setAttribute( Constants.REQ_FORM_FIRLDS_ED, ["code"] )
- 可编辑，因为未显式设置code只读：
  request.setAttribute( Constants.REQ_FORM_FIRLDS_RO, [""] )
- 不可编辑，因为显式设置code只读，且只读设置优先级高：
  request.setAttribute( Constants.REQ_FORM_FIRLDS_RO, ["code"] );
  request.setAttribute( Constants.REQ_FORM_FIRLDS_ED, ["code"] );

通过上面的代码可以看出：

- 通过设置 bropen.framework.Constants.REQ_FORM_RO 属性，所有表单域都不可编辑
- 通过设置 bropen.framework.Constants.REQ_FORM_FIELDS_ED 属性，来设置允许编辑的字段，默认为所有
- 通过设置 bropen.framework.Constants.REQ_FORM_FIELDS_RO 属性，来设置只读字段

再举一个例子，角色 ROLE_FOO_BAR 可以编辑字段 foo、bar：

if ( sec.role(code: "ROLE_FOO_BAR") ) {
request.setAttribute( bropen.framework.Constants.REQ_FORM_FIRLDS_ED, ["foo", "bar"] )
}

角色，角色 ROLE_FOO_BAR 可以编辑除 foo、bar 外的所有字段：

if ( sec.role(code: "ROLE_FOO_BAR") ) {
request.setAttribute( bropen.framework.Constants.REQ_FORM_FIRLDS_RO, ["foo", "bar"] )
}
标签： BroFramework
在2014-07-07 21:21上被李小翔创建

- 评论 （0）
- 附件 （0）
- 记录
- 信息

# 快速链接

- 首页
- 新闻动态
- FAQ

Copyright © 2013 北京博瑞开源软件有限公司
京ICP备12048974号