Wicket Form随机变化被忽略

时间:2014-05-28 14:46:33

标签: java forms wicket

我遇到了表单字段(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方法,结果是相同的...有时实体会使用用户输入的值进行更新,有时不会...

有趣的是,有时候实体会更新,有时它不会...大多数时候它都有效......

1 个答案:

答案 0 :(得分:0)

创建快速入门并报告用户列表 - 我很乐意调试问题。