0

私はユーザーエンティティを持っています:

@Entity
@Table(name = "user")
public class User implements Serializable{
private enum Sex {MALE, FEMALE};

@Id @GeneratedValue
private Long id;
@NotNull
private String name;
    @NotNull
    private String password;
}

コントローラ:

@Controller
public class HomeController {
@RequestMapping("/addUser")
public String showHomePage(Map<String, Object> map) {
    map.put("user", new User());
    return "addUser";
}

およびjspファイルのフォーム

<form:form method="post" action="add" commandName="user"> 
     <form:input path="name"/>
     <form:input path="password"/>
     <form:input path="confirm-password"/>
</form:form>

confirm-passwordにフィールドがないため、このフォームはエラーを生成しますUser.class。もちろん、についてconfirm-passwordフィールドを@Transient追加することもできUser.classますが、フォームにキャプチャフィールドを追加したい場合はどうすればよいですか。フォームにフィールドを追加する別の方法はありますか?

4

1 に答える 1

0

モデルをフォーム エンティティとして使用することはお勧めできません。ビューからデータを取得するための Bean クラスまたはフォーム クラスと、モデル用の別のクラスが必要です。

理由は、それらには異なる責任があるため、異なるクラスにマップする必要があるためです。多くの場合、それらは非常に似ていますが、その分離により、よりクリーンなコーディングが促進され、セキュリティ違反が回避されます。たとえば、ユーザーがリクエスト改ざんを使用してビューからモデル変数を使用しようとする可能性があるためです (fire bug など)。

上記のようなそれらの間のこれらの小さな違いは、別のクラスの作成を正当化します。

于 2012-05-04T18:46:37.953 に答える