【发布时间】:2015-05-12 01:15:48
【问题描述】:
我正在尝试使用 spring + thymeleaf 创建一个新用户。
我的模型是这样的:
class Person {
String name;
int preferences;
}
class Preferences {
public static final int no_preferences_checked = 0;
public static final int receive_newsletter = 1;
public static final int receive_notification_of_new_jobs = 2;
public static final int show_email_to_everyone = 4;
public static final int show_skype_to_everyone = 8;
}
在 HTML 表单中,用户将看到 4 个复选框(一个对应于上述 Preferences 类中的每个可能值。
Person 类的首选项字段是用户明确选中的复选框值的总和。
例如,如果用户同时检查了 receive_newsletter 和 show_email_to_everyone,则首选项字段必须为 5。
编辑:我想我并不清楚我的问题。让我改写一下:
我不知道如何编写HTML表单,以便Spring会自动创建Person类,所有数据填写在负责接收帖子的方法中。
当不涉及复选框时,很容易获得 Spring 生成的模型(我遵循了这个 tutorial 并且一切正常),但是一旦我开始使用复选框,它就不再对我有用了。字段首选项永远不会被填写。
有什么建议吗?
【问题讨论】:
-
将 INT 分配给您的偏好字段的目的是什么?您是否将这些值用于进一步处理?
-
只需将复选框发送到服务器并在那里进行计算......虽然我可能会为属性创建单独的布尔值。为您节省大量从 int 转换到 int 的麻烦。
-
@Aeseir 不是有很多字段来处理每个首选项,而是使用 int 给我相同的信息,只需对其应用 OR 操作即可。此外,新首选项不需要添加新字段。
-
最佳实践是预先编写更多代码,为成功做好准备。是的,这意味着要捕获和管理更多字段,但是如果您需要敏捷并编辑这些字段,您可以更快地不影响业务流程或表单中的其他字段。如果您按照计划进行合并,则对业务逻辑的任何细微更改都会导致对开发和 QA 进行大量再投资。
标签: spring spring-mvc checkbox thymeleaf