のjspの値に対応し、テーブル内のユーザの詳細を投入しようとしている列挙型の名前を表示したい、テーブルはシステムのユーザーのいくつかの基本的な情報が表示されます テーブルの構造は私は春に新しいです
Firstname Lastname Email Phone Number Role State
です
私は春の4を使用して、ユーザーリスト
の4マイModelクラス
@Entity
@Table(name = "USERS")
public class User {
@Id
@Column(name = "USER_ID")
private String userId;
@Column(name = "PASSWORD")
private String password;
@Column(name = "FIRST_NAME")
private String firstName;
@Column(name = "MIDDLE_NAME")
private String middleName;
@Column(name = "LAST_NAME")
private String lastName;
@Column(name = "EMAIL")
private String email;
@Column(name = "PHONE")
private String phone;
@Column(name = "STATE")
private int state=State.ACTIVE.getState();
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "USER_ROLE_MAP", joinColumns = { @JoinColumn(name = "USER_ID") }, inverseJoinColumns = {
@JoinColumn(name = "ROLE_ID") })
private Set<Role> blogRoles = new HashSet<>();
/*getters and setter and other utility methods are remove*/
私のコントローラメソッドを休止しています
<c:forEach items="${userList}" var="user">
<tr>
<td>${user.firstName}</td>
<td>${user.lastName}</td>
<td>${user.email}</td>
<td>${user.phone}</td>
<td>
<c:forEach items="${user.blogRoles}" var="role">
${role.roleType}
</c:forEach>
</td>
<td>${user.state}</td>
</tr>
</c:forEach>
ユーザリストデータを表示する
@RequestMapping(value = "/listUser", method = RequestMethod.GET)
public ModelAndView showAllUsers() {
System.out.println("start login");
ModelAndView modelAndView=new ModelAndView("listUser");
List<User> userList=userService.findAll();
System.out.println("user List controler "+userList);
modelAndView.addObject("currentUser", getPrincipal());
modelAndView.addObject("userList", userList);
return modelAndView;
}
私のJSPコード今私はstate
を整数として来るJSPでユーザの状態
public enum State {
ACTIVE(1), INACTIVE(2), LOCKED(3), DELETED(4);
private int state;
private State(int state) {
this.state = state;
}
public int getState() {
return state;
}
@Override
public String toString(){
return this.name();
}
public String getName(){
return this.name();
}
}
についての情報を持っている列挙型を持っている
name
、に対応する文字列値を表示したいはバネでインジェクトされた整数で、DBからハイバネートによってフェッチされます。
私は、enumからマップを作成し、そのオブジェクトをJSPに送信したり、独自のカスタムTLDを定義したりできるようにいくつかの方法があることを知っています。
しかし、私はまだこれらの種類のソリューションに満足していません、いくつかのより標準的な方法で値を表示するか、春とELのいくつかの機能を使用するより良い方法はありますか?
ご意見やご協力がありがとうございました。
役に立つかもしれないhttp:// stackoverflow。com/questions/3889248/java-get-the-enum-name-given-the-enum-value –
モデルでgetStateNameというメソッドを定義し、enum.nameメソッドを返します。その後jspからuser.stateNameを使用しますか?私はJSPに精通していませんが、春にはこれはうまくいくでしょう。 – alan7678
@ alan7678次に、ELを使用してJSPでこのメソッドによる戻り値にアクセスするにはどうすればよいですか? –