package org.springframework.samples.mvc.ajax.account;

import java.math.BigDecimal;
import java.util.Date;
import java.util.concurrent.atomic.AtomicLong;

import javax.validation.constraints.Future;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

import org.springframework.core.style.ToStringCreator;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.format.annotation.NumberFormat;
import org.springframework.format.annotation.NumberFormat.Style;

public class Account {

private Long id;

@NotNull
@Size(min = 1, max = 25)
private String name;

@NotNull
@NumberFormat(style = Style.CURRENCY)
private BigDecimal balance = new BigDecimal("1000");

@NotNull
@NumberFormat(style = Style.PERCENT)
private BigDecimal equityAllocation = new BigDecimal(".60");

@DateTimeFormat(style = "S-")
@Future
private Date renewalDate = new Date(new Date().getTime() + 31536000000L);

public Long getId() {
return id;
}

void setId(Long id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public BigDecimal getBalance() {
return balance;
}

public void setBalance(BigDecimal balance) {
this.balance = balance;
}

public BigDecimal getEquityAllocation() {
return equityAllocation;
}

public void setEquityAllocation(BigDecimal equityAllocation) {
this.equityAllocation = equityAllocation;
}

public Date getRenewalDate() {
return renewalDate;
}

public void setRenewalDate(Date renewalDate) {
this.renewalDate = renewalDate;
}

Long assignId() {
this.id = idSequence.incrementAndGet();
return id;
}

private static final AtomicLong idSequence = new AtomicLong();

public String toString() {
return new ToStringCreator(this).append("id", id).append("name", name)
.append("balance", balance).append("equityAllocation",
equityAllocation).append("renewalDate", renewalDate)
.toString();
}

}




package org.springframework.samples.mvc.basic.account;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

import javax.validation.Valid;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
@RequestMapping(value="/account")
public class AccountController {

private Map<Long, Account> accounts = new ConcurrentHashMap<Long, Account>();
@RequestMapping(method=RequestMethod.GET)
public String getCreateForm(Model model) {
model.addAttribute(new Account());
return "account/createForm";
}
@RequestMapping(method=RequestMethod.POST)
public String create(@Valid Account account, BindingResult result) {
if (result.hasErrors()) {
return "account/createForm";
}
this.accounts.put(account.assignId(), account);
return "redirect:/account/" + account.getId();
}
@RequestMapping(value="{id}", method=RequestMethod.GET)
public String getView(@PathVariable Long id, Model model) {
Account account = this.accounts.get(id);
if (account == null) {
throw new ResourceNotFoundException(id);
}
model.addAttribute(account);
return "account/view";
}

}



package org.springframework.samples.mvc.basic.account;

import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus;

@ResponseStatus(value=HttpStatus.NOT_FOUND)
public class ResourceNotFoundException extends RuntimeException {
private Long resourceId;
public ResourceNotFoundException(Long resourceId) {
this.resourceId = resourceId;
}
public Long getResourceId() {
return resourceId;
}
}

'Programming > Spring' 카테고리의 다른 글

스프링 MVC 예제 링크 및 간단 정리..  (0) 2011.11.19
Posted by 한효정

블로그 이미지
착하게 살자.
한효정

카테고리

공지사항

Yesterday
Today
Total

달력

 « |  » 2024.10
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

최근에 올라온 글

최근에 달린 댓글

글 보관함