2013-08-29 1 views
0

Я не могу создать соответствующий GUI через roo для отношений «один ко многим». В частности, мне понадобится элемент множественного выбора, чтобы выбрать среди полномочий (весеннюю безопасность) для связи с пользователем.Взаимодействие Spring roo и One-To-Many в генерации графического интерфейса

Я создал RegisteredUser класс:

@RooJavaBean 
@RooToString 
@RooJpaActiveRecord 
public class RegisteredUser extends MyUser implements UserDetails, 
    CredentialsContainer { 

private String password; 
private String username; 
private Boolean enabled = true; 
private Boolean accountNonExpired = true; 
private Boolean credentialsNonExpired = true; 
private Boolean accountNonLocked = true; 

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY) 
private Set<MyBaseAuthority> authorities = new HashSet<MyBaseAuthority>(); 

@Override 
public void eraseCredentials() { 
    password = null; 
} 

@Override 
public Collection<? extends GrantedAuthority> getAuthorities() { 
    return authorities; 
} 

@Override 
public String getPassword() { 
    return password; 
} 

@Override 
public String getUsername() { 
    return username; 
} 

@Override 
public boolean isAccountNonExpired() { 
    return accountNonExpired; 
} 

@Override 
public boolean isAccountNonLocked() { 
    return accountNonLocked; 
} 

@Override 
public boolean isCredentialsNonExpired() { 
    return credentialsNonExpired; 
} 

@Override 
public boolean isEnabled() { 
    return enabled; 
} 
} 

Тогда MyBaseAuthority класс:

@RooJavaBean 
@RooToString 
@RooJpaActiveRecord 
public class MyBaseAuthority extends ObjectWithId implements 
    GrantedAuthority { 
    private String authority; 

@Override 
public String getAuthority() { 
    return authority; 
} 
} 

Тогда я должен был вручную создать контроллер для MyBaseAuthority, но не для RegisteredUser (генерируется webmvc командой):

@RequestMapping("/registeredusers") 
@Controller 
@RooWebScaffold(path = "registeredusers", formBackingObject = RegisteredUser.class) 
public class RegisteredUserController { 
} 

@RequestMapping("/authorities") 
@Controller 
@RooWebScaffold(path = "authorities", formBackingObject = MyBaseAuthority.class) 
public class MyBaseAuthorityController { 
} 

В GUI я могу создать и перечислить все полномочия и d зарегистрированных пользователей. Однако при создании зарегистрированного пользователя я могу установить только строковые поля и логические поля, но не отношения «один ко многим». Как я могу это исправить?

+0

Прошло некоторое время с тех пор, как я использовал готовый графический интерфейс от Roo, но если память служит мне, он генерирует «один-ко-многим» со стороны * Много *, поэтому вы сможете перейти к все * Много * s и выбирают один и тот же Один снова и снова. – CodeChimp

ответ

1

Если бы я пытался acomplish этой задачи, я бы распечатать все мои флажки с доступными опциями в качестве ключей массива с именем, как так:

<input type="checkbox" name="role[]" value="ROLE_ONE"> 
<input type="checkbox" name="role[]" value="ROLE_TWO"> 

Тогда, я бы сопоставить эти параметры в строку [] массив как в this post

@RequestParam(value="myParam[]" String roles) 

я затем цикл по струнам и добавить создавать объекты MyBaseAuthority, прикрепить пользователя и сохраняются() их.