기록
JSP 상품등록 페이지 (유효성검사,상품코드 +1 메서드) 추가 본문
<%@page import="kr.or.ddit.dao.ProductRepository"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!-- 상품정보를 등록하는 페이지 만들기 -->
<%
ProductRepository productRepository = ProductRepository.getInstance();
String productId = productRepository.getNextProductId();
%>
<!-- scope(영역) : page(pageContext)- 생략가능(기본), request, session, application -->
<c:set var="productId" value="<%=productId%>" scope="page"/>
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="/css/bootstrap.min.css" />
<script src="/js/jquery-3.6.3.min.js"></script>
<script type="text/javascript" src="/ckeditor/ckeditor.js"></script>
<title>상품 등록</title>
<script type="text/javascript">
//핸들러 함수
function checkAddProduct(){
let productId = $("input[name=productId]").val();
let pname = $("input[name=pname]").val();
let unitPrice =$('input[name=unitPrice]').val();
let unitsInStock = $('input[name=unitsInStock]').val();
//input type="file"
let productImage = $("input[name=productImage]").val();
let regExpProductId = /^p[0-9]{4,11}$/;
// let regExpProductId = /^p\d{4,11}$/
//소수점둘째자리
// ? : 있을수도있고, 없을수도있다.
let rehExpUnitPrice = /^\d+(?:[.]?[\d]?[\d]?)$/;
console.log("productId"+productId);
console.log("pname"+pname);
console.log("unitPrice"+unitPrice);
console.log("unitsInStock"+unitsInStock);
//상품 아이디 체크
//1) 첫글자는 반드시 p로 시작하고 숫자를 조합하여 5~12자리까지 입력하세요
//정규표현식.test(대상문자열)
if(!regExpProductId.test(productId)){
alert("첫글자는 반드시 p로 시작하고 숫자를 조합하여 5-12까지 입력하세요");
$("input[name=productId]").focus();
return false;
}
//상품명 체크
//2) 최소 4자에서 최대 12자까지 입력하세요.
if(pname.length<4 || pname.length>12){
alert("[상품명]\n최소4자에서 최대 12까지 까지 입력하세요");
$("input[name=pname]").focus();
return false;
}
//상품가격체크
//3)숫자만 입력하세요. 음수는 입력할수 없습니다. 소수점 둘째 자리까지만 입력하세요
// isNaN : is Not a Number
if(unitPrice.length==0 || isNaN(unitPrice)){
alert("[가격]\n숫자만 입력하세요");
$('input[name=unitPrice]').focus();
return false;
}
if(unitPrice <0){ //음수면
alert("[가격]\n음수는 입력할수없습니다.");
$('input[name=unitPrice]').focus();
return false;
}else{ //양수면
if(!rehExpUnitPrice.test(unitPrice)){
alert("[가격]\n소수점 둘째자리까지만 입력가능합니다.");
$('input[name=unitPrice]').focus();
return false;
}
}
//재고수체크
//4)숫자만 입력하세요.
if(isNaN(unitsInStock)){ //숫자가 아니라면
alert("[재고수]\n숫자만 입력하세요");
$('input[name=unitsInStock]').focus();
return false;
}
//파일체크
//5) 파일을 선택하세요
if(productImage==""){
alert("[상품이미지]\n파일을 선택하세요");
return false;
}
$("#newProduct").submit();
}
</script>
</head>
<body>
<jsp:include page="menu.jsp"></jsp:include>
<div class="jumbotron">
<div class="container">
<h1 class="display-3">상품등록</h1>
</div>
</div>
<div class="container">
<!-- 폼페이지 시작 -->
<form name="newProduct" id="newProduct" action="processAddProduct.jsp"
class="form-horizontal" method="post" enctype="multipart/form-data">
<!-- 가로방향(행=로우=튜플=레코드) -->
<div class="form-group row">
<label class="col-sm-2">상품코드</label>
<div class="col-sm-3">
<input type="text" name="productId" class="form-control" value="${productId}" readonly/>
</div>
</div>
<div class="form-group row">
<label class="col-sm-2">상품명</label>
<div class="col-sm-3">
<input type="text" name="pname" class="form-control" required/>
</div>
</div>
<div class="form-group row">
<label class="col-sm-2">가격</label>
<div class="col-sm-3">
<input type="text" name="unitPrice" class="form-control" required/>
</div>
</div>
<div class="form-group row">
<label class="col-sm-2">상세정보</label>
<div>
<!-- 세로 : cols, 가로 : rows -->
<textarea class="form-control" cols="100" rows="2" id="description" name="description"></textarea>
</div>
</div>
<div class="form-group row">
<label class="col-sm-2">제조사</label>
<div class="col-sm-3">
<input type="text" name="manufacturer" class="form-control"/>
</div>
</div>
<div class="form-group row">
<label class="col-sm-2">분류</label>
<div class="col-sm-3">
<!--
input type="checkbox" / "radio" => checked
-->
<select class="form-select" id="category" name="category" aria-label="Disabled select example" >
<option selected>분류를 선택하세요</option>
<option value="Smart Phone">Smart Phone</option>
<option value="Notebook" selected>Notebook</option>
<option value="Tablet">Tablet</option>
</select>
</div>
</div>
<div class="form-group row">
<label class="col-sm-2">재고 수</label>
<div class="col-sm-3">
<input type="text" name="unitsInStock" class="form-control"/>
</div>
</div>
<div class="form-group row">
<label class="col-sm-2">상태</label>
<div class="col-sm-5">
<input type="radio" id="New" name="condition" value="New" checked/>
<label for="new">신규제품</label>
<input type="radio" id="Old" name="condition" value="Old"/>
<label for="old">중고제품</label>
<input type="radio" id="Refurbished" name="condition" value="Refurbished"/>
<label for="Refurbished">재생제품</label>
</div>
</div>
<div class="form-group row">
<label class="col-sm-2">이미지</label>
<div class="col-sm-5">
<input type="file" name="productImage" class="form-control">
</div>
</div>
<div class="form-group row">
<div class="col-sm-offset-2 col-sm-10">
<!-- <button type="submit" .. </button> -->
<!-- checkAddProduct() : 핸들러함수 -->
<input type="button" class="btn btn-primary" value="등록" onclick="checkAddProduct()"/>
<input type="reset" class="btn btn-danger" value="초기화"/>
<input type="button" class="btn btn-success" value="목록"
onclick="javascript:location.href='products.jsp'" />
</div>
</div>
</form>
<!-- 폼페이지 끝 -->
</div>
<script>
CKEDITOR.replace('description');
</script>
<jsp:include page="footer.jsp"></jsp:include>
</body>
</html>
상품코드 + 1 해주기 메소드
public String getNextProductId() {
// List<ProductVO> listOfProducts => 상품목록
// list는 0부터 샘. 리스트의 size가 3이면 0,1,2
// 즉 index의 마지막 번호는 크기 -1
ProductVO productVO = listOfProducts.get(listOfProducts.size()-1);
System.out.println("productVO : "+productVO);
//마지막 상품의 상품코드를 가져옴
String productId = productVO.getProductId();
System.out.println("productId : "+productId);
//상품코드 +1 : p1236 + 1 = > p1237
int id = Integer.parseInt(productId.substring(1,5));
System.out.println("id : "+id);
id++;
productId = "p"+id;
System.out.println("productId : "+ productId);
return productId;
}
<%
ProductRepository productRepository = ProductRepository.getInstance();
String productId = productRepository.getNextProductId();
%>
<!-- scope(영역) : page(pageContext)- 생략가능(기본), request, session, application -->
<c:set var="productId" value="<%=productId%>" scope="page"/>
<div class="form-group row">
<label class="col-sm-2">상품코드</label>
<div class="col-sm-3">
<input type="text" name="productId" class="form-control" value="${productId}" readonly/>
</div>
</div>
상품코드에 붙여넣기
붙여넣기 성공!
'JSP' 카테고리의 다른 글
JSP 웹페이지 예외처리 해주기 (0) | 2023.01.13 |
---|---|
JSP JSTL fmt 태그, PropertiesEditor 설치 (0) | 2023.01.11 |
JSP 유효성검사 4 정규표현식 (0) | 2023.01.09 |
JSP 유효성검사 (validation) 3 영문소문자, 숫자 유효성검사 (0) | 2023.01.06 |
JSP 유효성검사 (validation) 2 글자수 유효성 검사 (0) | 2023.01.06 |
Comments