欢迎进入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上被李小翔创建

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