У меня типичная проблема с использованием флажков. У меня есть сотрудники и навыки. Каждый сотрудник может обладать многими навыками, а навыки могут принадлежать многим сотрудникам. Это делает его много-много отношений.Использование флажков во многих отношениях в графе
This мои классы Доменные
class Skill {
String name
static hasMany = [users:Employee, resources:Resource]
static belongsTo = [Employee]
static constraints = {
name unique: true, nullable: false, blank: false
}
String toString() { return name }
String getDisplayName() { return name }
}
class Employee {
String name
String surname
Date birthdate
BigDecimal salary
Address address
static hasMany = [skills: Skill]
static belongsTo = [team:Team]
static constraints = {
address nullable: false, blank: false
name nullable: false, blank: false, matches: '[a-zA-Z\\-\'\\s]+'
surname nullable: false, blank: false, matches: '[a-zA-Z\\-\'\\s]+'
skills nullable: true, blank: true
salary nullable: false, min: 16000.0, max: 60000.0
team nullable: true
birthdate max:new Date(use(TimeCategory){18.years.ago.getTime()})
}
String toString() { return "\nEmployee Information:\n Name: $name\n Surname: $surname\n " +
"Date of Birth: $birthdate\n Salary: $salary\n"}
}
домен Служащий работает отлично, я могу создать сотрудника с адресом без каких-либо проблем.
Но когда я пытаюсь добавить навыки к сотруднику, он не делает то, что я тоже рассказываю. Например, когда я проверяю два конкретных навыка, он пытается запустить и сохранить, он добавит все навыки работнику.
Как я могу сказать контроллеру только добавить то, что было проверено.
Это мой код в контроллере
@Transactional
def create() {
params.each { println("$it.key -> $it.value") }
def employee = new Employee(params)
def address = new Address(params)
def skills = Skill.list()
if (params["create"]) {
if (address.validate()) {
address.save()
employee.address = address
params.remove("_s")
skills.each { skill -> if (params["s"] != null) {
employee.addToSkills(skill)
}
}
if (employee.validate()) {
employee.save()
flash.message = "Employee has been successfully created"
redirect(action: "index")
}
} else {
flash.message = "Ooops Error!!!!"
render(view: "create", model: [employee: employee, address: address, skill: skills])
}
}
[employee: employee, address: address, skill: skills]
}
Это мой create.gsp
<div class="col-md-6">
<label>Select Your Competences:</label>
<g:each in="${skill}" var="s" status="i">
<br/>
<g:checkBox name="s" value="${s.id}" checked="false"/>
<label for="s">${s.name}</label>
</g:each>
</div>
При использовании 'г: проверка Box "проверенное значение отправляется с использованием имени с префиксом подчеркивания. В вашем случае '' 'всегда будет содержать все значения независимо от их проверки. Только параметр '_s' будет содержать проверенные значения. –