基于之前的帖子和收到的一些建议,我修改了我的应用程序,使用ajax依赖选择插件来处理我所拥有的一些链式选择列表。 选择列表是顾问 - >合同 - >项目
我有一个创建页面和编辑页面,用于使用相同表单模板的评估。在创建页面上,我的链接选择正常工作并保存到数据库。但是,当我打开现有评估时,仅填充选择主要选择框。我是否需要对此插件执行一些特殊操作,以便在编辑页面上根据需要填充辅助选择框值和列表?
以下是我的域类的代码 顾问域类
class CdeConsultant {
String ccf_consultant_firm
static hasMany=[contracts:Contract]
static mapping = {
table name: 'cde_consultant'
version false
id column: 'ccf_consultant_id', generator: "assigned"
}
}
以下是我的合同域类
的代码class Contract {
String contractName
int conId
String phone
String projectManagerName
CdeConsultant cdeConsultant
static hasMany=[projectLists:ProjectList]
static mapping = {
table name: 'contract'
version false
id column: 'contracts_id', generator: "assigned"
}
}
以下是我的ProjectList域类的代码 class ProjectList {
String project
Contract contract
static mapping = {
table name: 'project_list'
version false
id column: 'dpp_project_phase_id', generator: "assigned"
contract column: 'contracts_id'
}
}
以下是评估类的代码,这是保存这些字段的地方
import java.util.Date
class CdeEvaluation extends Base {
String consultant
String consultantName
String project
String projectManager
String projectManagerPhone
String evalStatus
String cdeComment
Date evalBeginDate
Date evalEndDate
String submitApproval
int workCategory
int contract
String contractName
List<CdeEvalQuestion> questions
static hasMany = [questions: CdeEvalQuestion]
static constraints = {
consultant(nullable:true)
consultantName(nullable:true)
project(nullable:true)
contract(nullable:true)
contractName(nullable:true)
projectManager(nullable:true)
projectManagerPhone(nullable:true)
evalStatus(nullable:true)
workCategory(nullable:true)
evalEndDate validator: {value, cdeEvaluation -> value >= cdeEvaluation.evalBeginDate}
cdeComment(nullable:true, maxSize:2000)
submitApproval(nullable:true)
evalBeginDate(blank: false, nullable:true)
evalEndDate(blank: false, nullable:true)
createdBy(blank: false, nullable:true, maxSize:13)
dateCreated(blank: false, nullable:true)
lastUpdatedBy(blank: false, nullable:true, maxSize:13)
lastUpdated(blank: false, nullable:true)
}
static mapping = {
table name: 'CDE_EVALUATION'
id column: 'ceval_id_seq'
id generator: 'sequence', params: [sequence: 'ceval_id_seq']
}
@Override
public String toString() {
"${project}"
}
class EvaluationController {
static scaffold=true
}
}
最后,我的表单模板的代码在创建和编辑页面中使用。
<g:selectPrimary class="form-select-list" id="consultant" name="consultant" label="Consultant"
domain='gov.mt.mdt.cde.domain.evaluation.CdeConsultant'
searchField="ccf_consultant_firm"
collectField='id'
domain2='gov.mt.mdt.cde.domain.evaluation.Contract'
bindid="cdeConsultant.id"
searchField2='contractName'
collectField2='id'
noSelection="['': 'Select A Consultant']"
setId="contract"
value="${cdeEvaluationInstance?.consultant}"
appendValue=''
appendName='Select a Contract' />
<g:selectSecondary class="form-select-list" id="contract" name="contract"
domain2='gov.mt.mdt.cde.domain.evaluation.ProjectList'
bindid="contract.id"
searchField2='project'
collectField2='project'
noSelection="['': 'Select A Contract']"
setId="project"
appendValue=''
appendName='Select a Project'
value="${cdeEvaluationInstance?.contract}"
required="false"/>
<g:select class="form-control" name="project" id="project" optionKey="project" optionValue="project"
from="[]" noSelection="['': 'Select A Project']" value="${cdeEvaluationInstance?.project}" />
答案 0 :(得分:0)
抱歉有点迟到在这里回答你的问题,编辑我不认为有很多文档:)。虽然目前的情况让我有了扩展插件的想法......
作为辅助选择的问题依赖于主要选择,主要选择本身会触发要填充的辅助框的聚集列表。由于未定义主要内容,因此您可以看到问题。
让我想一想,如果你已经把它作为github上的问题/建议提出来的话我会提前做到。
<强>更新强>
好的,我推出了0.40,希望能够解决编辑模式:
请看一下这页:
理论上假设硬编码值作为动态变量从db返回,每个主要/次要调用需要一个额外的定义:
所以在
value='4'
secondaryValue='10'
值是它自己的值, secondaryValue 是您希望设置下一个selectSecondary
请注意我还必须从selectPrimary / selectSecondary调用中删除appendName和appendValue。我认为编辑模式中存在某种形式的冲突......
无论如何,测试似乎正在发挥作用。