728x90
반응형
728x90
반응형
728x90
반응형
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!-- ASP 코드의 include -->
<!-- 상대경로 -->
<!--#include file="/second.html"-->
<!-- 절대경로-->
<!--#include virtual="/main/second.html"-->
 
<!-- PHP 코드의 include -->
<?
    include_once $_SERVER["DOCUMENT_ROOT"].'/main/second.html';
?>
 
<!-- javascript 코드의 include -->
<script>
    // 상대주소
    document.location.href="second.html";
    // 절대주소
    document.location.href="../main/second.html";
</script>
 
<!-- HTML 코드의 include -->
<!-- 절대주소 -->
<link rel="stylesheet" href="../main/second.html">
cs
728x90
반응형
728x90
반응형

용도 : DB 테이블 상에 엔터가 입력되어 있지만 html에서 한줄로 나오는 문제

 

# 수정 전

1
<td> <%= contents%> </td>
cs

 

# 수정 후

1
<td> <%= Replace(contents, Chr(13)&Chr(10),"<br>") %> </td>
cs

DB 테이블 상의 엔터값을 태그 <br>로 변경

 

 

728x90
반응형

'코딩 삽질' 카테고리의 다른 글

[weblogic] 500 에러  (2) 2019.12.10
[html] include 절대경로, 상대경로  (0) 2019.11.24
[asp] write error log at text file  (0) 2019.11.24
[java] java.lang.NumberFormatException  (0) 2019.11.17
[oracle] GRANT (권한)  (0) 2019.11.17
728x90
반응형

기존에 썼던 코드를 그대로 가져와서 적은거라 좀 장황한데

 

# 셈플1

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
function AddCareerLine(){
    var cnt = $('.career').length;
 
    // textarea 추가
    var nCareer = document.createElement("textarea");
    var sName = 'careerList['+ cnt +'].career';
    var sId = 'career'+cnt;
    nCareer.setAttribute("rows"3);
    nCareer.setAttribute("cols"120);
    nCareer.setAttribute("name", sName);
    nCareer.setAttribute("id", sId);
    nCareer.setAttribute("class""career");
    document.getElementById("tchrCreear").appendChild(nCareer);
 
    // 줄바꿈
    var tagBr = document.createElement("br");
    document.getElementById("tchrCreear").appendChild(tagBr);
}
 
function DeleteCareerLine(){
    var cnt = $('.career').length;
 
    // textarea가 2개 이상인 경우 마지막 textarea를 삭제
    if (cnt > 1) {
        var sId = 'career' + (cnt-1);
        $('#'+sId).remove();
    }else {
        console.log('textarea count : 1');
    }
}
cs

 

javascript로 만드는 건데

태그를 만들고 var nCareer = document.createElement("textarea");

태그의 속성을 지정한다 nCareer.setAttribute("rows"3);

마지막으로 특정 태그 하위에 자식으로 넣어준다. document.getElementById("tchrCreear").appendChild(nCareer);

삭제는 jquery를 썼는데 이렇게 삭제한다. $('#'+sId).remove();

 

 

# 셈플2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// 재료 입력 div 추가
function addMaterialfrm(){
    
    var addIndex = $("#main_nextIndex").val();
    $("#main_nextIndex").val(Number(addIndex) + 1 );
 
    var addDivTag = "<div id='main_div_" + addIndex + "' style='margin-bottom: 5px;'>";
    addDivTag += "<input type='text' name='main[" + addIndex + "].mtrlNm' id='main[" + addIndex + "].mtrlNm' placeholder='재료명' style='width:250px;margin-right: 22px;'>";
    addDivTag += "<input type='text' name='main[" +addIndex + "].qty' id='main[" + addIndex + "].qty' placeholder='수랑' style='width:250px;margin-right:5px;'>";
    addDivTag += "<input type='hidden' name='main[" +addIndex + "].mtrlSeq' id='main[" + addIndex + "].mtrlSeq' value='0'/>";
    addDivTag += "<input type='hidden' name='main[" +addIndex + "].mtrlTp' id='main[" + addIndex + "].mtrlTp' value='main'/>";
    addDivTag += "<button type='button' class='btn btn-danger btn-sm' onclick='delMaterialfrm(`main`, " + addIndex +")'><i class='glyphicon glyphicon-minus'></i></button>";
    addDivTag += "</div>";
 
    $("#main_span").append(addDivTag);
 
}
// 재료 입력 div 삭제
function delMaterialfrm(id){
 
    var delDivId = "main_div_" + id;
    $("#"+delDivId).remove();
 
}
cs

 

이건 그냥 스트링으로 하나하나 써서 만든 경우.

복잡해 보이지만 사실 간단한 내용으로 스트링으로 태그를 모두 작성하고

마지막에 jquery로 특정 태그 하위에 추가한다. $("#main_span").append(addDivTag);

 

* 관련글

[javascript, jquery] 동적 tag 추가시 이벤트 : https://deonggi.tistory.com/119

 

 

728x90
반응형

'코딩 삽질' 카테고리의 다른 글

[oracle] link db  (0) 2019.11.17
[git] remote 추가  (0) 2019.11.17
[javascript] ckeditor 유효성 체크  (0) 2019.11.06
[메모] 네이버 클라우드 서버 - 윈도우 서버 세팅  (0) 2019.11.06
[tomcat] memory leak 에러  (0) 2019.11.05
728x90
반응형

thymeleaf 3.0.10 이상을 사용하는 html에서 javascript 함수에 인수를 전달할때

 

기존에는 이렇게 작성했다.

1
<a href="#" th:onclick="${'writeProc('+ detailVO.itemSeq+')'}">Delete</a>
cs

 

하지만 아래와 같은 에러 메시지가 나온다.

 

org.thymeleaf.exceptions.TemplateProcessingException: Only variable expressions returning numbers or booleans are allowed in this context, any other datatypes are not trusted in the context of this expression, including Strings or any other object that could be rendered as a text literal. A typical case is HTML attributes for event handlers (e.g. "onload"), in which textual data from variables should better be output to "data-*" attributes and then read from the event handler.

 

그래서 thymeleaf 3.0.10 이상에서는 이렇게 바꿔야 한다.

1
<a href="#" th:onclick="writeProc( [[${detailVO.itemSeq]] )">Delete</a>
cs

 

함수 호출 부분이 보기에 좀더 직관적이라 좋다.

 

 

 

출처 : https://codeday.me/ko/qa/20190702/944892.html

728x90
반응형
728x90
반응형

Java의 VO

1
2
3
4
5
6
7
8
9
10
11
@Setter
@Getter
@ToString
public class MaterialVO {
 
    private int mtrlSeq;
    private String mtrlNm;
    private String mtrlTp;
    private String qty;
 
}
cs

====

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Setter
@Getter
@ToString
public class ProductVO {
 
    private int prodSeq;
    private String prodNm;
    private String recipe;
    private String showYn;
 
    // 재료 리스트
    private List<MaterialVO> material;
 
}
cs

대략 이런 구조라고 해보자.

이때 html에서는 재료리스트는 어떻게 네이밍 해줘야 할까?

 

1
2
3
4
5
6
<input type="text" name="prodSeq" th:value="${detailVO != null ? detailVO.prodSeq: '-1'}"/>
 
<!-- List  -->
<input type="text" name="material[0].mtrlNm" th:value="${detailVO.mainMaterial[0].mtrlNm}">
<input type="text" name="material[1].mtrlNm" th:value="${detailVO.mainMaterial[1].mtrlNm}">
 
cs

 

이건 thymeleaf 문법이 포함된 건데,

value 부분은 ModelAndView에 mav.addObject("detailVO", detailVO) 로 값을 넣어준 경우로 참고하면 되고,

중요건 name 부분이다. name="material[i].mtrlNm" 형태다.

 

ProductVO이 List<MaterialVO> material;

name="material[i].mtrlNm"

붉은색 부분의 네이밍이 같다는 것과 배열과 형태로 인덱스를 지정하고 마침표(.)로 변수명을 구분한다는 것을 주의하면 된다.

 

 

 

출처 : https://cofs.tistory.com/84

 

 

728x90
반응형

+ Recent posts