我遇到了表单字段(Transient wicket form field ignored)的问题,我对答案没有太大帮助,所以我做了一些更改,现在字段有时会更新,有时候不会......这是当前的代码:
用户实体:
@Entity(name = "user")
@Audited
public class User extends DataObjectAudit {
private static final long serialVersionUID = 1L;
private RoleTypeEnum role = null;
public RoleTypeEnum getRole() {
return role;
}
public void setRole(RoleTypeEnum role) {
this.role = role;
}
}
在面板中,有一个下拉面板(扩展GenericPanel),可能的选项是用户的当前活动角色加载“较低”的可能角色。所选的选项应加载到“role”属性中。
User sessionUser = StudySession.getSessionUser();
List<RoleTypeEnum> roles = new ArrayList<RoleTypeEnum>();
roles.addAll(sessionUser.getRole().getLowerAndEqualsThanSelf());
WefDropDownPanel<RoleTypeEnum> role = new WefDropDownPanel<RoleTypeEnum>(helper.of(RoleTypeEnum.class, "role").errorRequired(), roles).setSizes(Size.S0, Size.S1, Size.S4);
add(role);
该字段没有验证,但其他人也有。
保存表单之前唯一的事情是:
@Override
protected void onBeforeSave(AjaxRequestTarget target, WefForm<User> form) {
User user = getModelObject();
DataService dataService = ServiceFactory.getBean(DataService.class);
ProjectCenter projectCenter = dataService.findUniqueByParameters(ProjectCenter.class, new Parameter<Object>("center", user.getCenter()));
if (projectCenter != null) {
user.setProject(projectCenter.getProject());
}
}
结果是有时候“角色”会更新,有时它不会......而且,所有其他字段(我已经删除以简化)也被忽略了......
如果我删除onBeforeSubmit方法,结果是相同的...有时实体会使用用户输入的值进行更新,有时不会...
有趣的是,有时候实体会更新,有时它不会...大多数时候它都有效......
答案 0 :(得分:0)
创建快速入门并报告用户列表 - 我很乐意调试问题。