在Jspresso的用户界面上没有处理N-N双向关系

时间:2015-10-05 08:22:03

标签: jspresso

我正在研究Jspresso框架(使用Swing启动项目)。我在组件之间建立了N-N双向关系,但是没有出现与这些关系对应的字段。   例如,我有项目和学生之间的关系(学生可以有很多项目,一个项目可以有很多学生)。当我添加一个项目并在其详细视图中打开它时,我可以创建一个新学生并将其添加到项目但是我无法将现有学生添加到项目中,也不会根据学生在搜索视图中搜索项目。   有没有办法显示这个?

这是我的view.groovy

     g_aBld[cntBld].type = rand() / (RAND_MAX / 3);

这是我的model.groovy

 // Implement your views here using the SJS DSL.

 form('Project.pane',
    parent:'decoratedView',
    labelsPosition:'ASIDE',
    columnCount:2,
    fields:     ['name','students','technologies','usesTrainers','technicalTrainers']){
    actionMap{
            actionList('FILE'){
                action(ref:'saveModuleObjectFrontAction')
                action(ref:'reloadModuleObjectFrontAction')
          }
    }
}

table'Project-students.table',
    parent:'decoratedView',
    actionMap:'masterDetailActionMap'

split_vertical'Project.proj.view',
    model:'Project',
    top:'Project.pane',
    bottom:'Project-students.table'



form('Student.pane',
    parent:'decoratedView',
    labelsPosition:'ASIDE',
    columnCount:2){
        actionMap{
                actionList('FILE'){
                action(ref:'saveModuleObjectFrontAction')
                action(ref:'reloadModuleObjectFrontAction')
          }
    }
}

table'Student-technologies.table',
    parent:'decoratedView',
    actionMap:'masterDetailActionMap'

split_vertical'Student.proj.view',
    model:'Student',
    top:'Student.pane',
    bottom:'Student-technologies.table'

form('Trainer.pane',
    parent:'decoratedView',
    labelsPosition:'ASIDE',
    columnCount:5)

form('Technology.pane',
    parent:'decoratedView',
    labelsPosition:'ASIDE',
    columnCount:5)

1 个答案:

答案 0 :(得分:1)

你绝对可以轻松实现这两个目标。

1 / A N-N关系可以简单地视为两个1-N关系。因此,您可以在面向Project-students的视图上使用Project关系,在面向学生的视图上使用Student-projects。您可以使用2个不同的过滤器模块(一个在Project上,一个在Student上)或补充您的Project.proj.view,以便通过添加一个额外的表来添加第二级详细信息第一个表格详细信息中所选学生的Student-projects

类似的东西:

split_vertical ('Project.proj.view',
  model:'Project',
  top:'Project.pane') {
  bottom {
    split_horizontal(
      left:  'Project-students.table',
      right: 'Student-projects.table',
      cascadingModels: true
    )
  }
}

2 /关于选择现有ProjectStudent并将其添加到相应馆藏的功能,您可以使用自定义LOV操作,如1st chapter of the Jspresso-CE reference documentation中所述。

类似的东西:

table('Project-students.table') {
  actionMap {
    actionList('EDIT'){
      action(parent:'lovAction',
        custom:[
          autoquery:false,
          entityDescriptor_ref:'Student',
          okAction_ref:'addAnyToMasterFrontAction'
        ]
      )
      action(ref:'removeAnyCollectionFromMasterFrontAction')
    }
  }
}

3 /对于Project(或反过来)过滤Student,Jspresso支持将集合属性定义为过滤器属性。在这种情况下,过滤器视图将为学生安装LOV以过滤Projects for。

如果您希望在每个Project过滤器视图上默认使用它,请直接在模型上声明它。

类似的东西:

Entity ('Project'
        ...
        queryable : ['name', 'students']
        ...){
  ...
}